class Solution: def subsets_recursive(self, nums): """ O(n*2^n) :type nums: List[int] :rtype: List[List[int]] Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solution set must not contain duplicate subsets. Example: Input: nums = [1,2,3] Output: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] """ # [1,2,3], [ [],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3] ] res = [] self.generateSet(nums, 0, res, []) return res def generateSet(self, nums, startingPos, res, subRes): res.append(subRes[:]) for i in range(startingPos, len(nums)): subRes.append(nums[i]) self.generateSet(nums, i + 1, res, subRes) subRes.pop()