spacepaste

  1.  
  2. class Solution:
  3. def subsets_recursive(self, nums):
  4. """
  5. O(n*2^n)
  6. :type nums: List[int]
  7. :rtype: List[List[int]]
  8. Given a set of distinct integers, nums, return all possible subsets (the power set).
  9. Note: The solution set must not contain duplicate subsets.
  10. Example:
  11. Input: nums = [1,2,3]
  12. Output:
  13. [
  14. [3],
  15. [1],
  16. [2],
  17. [1,2,3],
  18. [1,3],
  19. [2,3],
  20. [1,2],
  21. []
  22. ]
  23. """
  24. # [1,2,3], [ [],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3] ]
  25. res = []
  26. self.generateSet(nums, 0, res, [])
  27. return res
  28. def generateSet(self, nums, startingPos, res, subRes):
  29. res.append(subRes[:])
  30. for i in range(startingPos, len(nums)):
  31. subRes.append(nums[i])
  32. self.generateSet(nums, i + 1, res, subRes)
  33. subRes.pop()
  34.