题目描述:
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], [] ]
解题思路:
可以采用回溯和动态规划方法,在此采用的是动态规划的思路
基本想法是:
若原本有集合S,新添加一个元素构成集合S+1,新集合包含的子集分为两部分,一部分是原S的子集,另一部分是原S的子集加上新元素后的子集
代码:
class Solution(object):
def subsets(self, nums):
result=self.ssubset(nums)
for element in result:
element.sort()
return result
def ssubset(self,nums):
if len(nums)==0:
return [[]]
if len(nums)==1:
return [[],nums]
first=nums[0]
temp=nums[1:]
temp_sub=self.ssubset(temp)
result=[]
for element in temp_sub:
result.append(element)
add=list(element)
add.append(first)
result.append(add)
return result