Backtrack with include/exclude decision at each index.
function subsets(nums): result = [] def backtrack(index, current): if index == len(nums): result.append(current[:]) return current.append(nums[index]) backtrack(index + 1, current) current.pop() backtrack(index + 1, current) backtrack(0, []) return result
time.