解题思路
- 回溯算法,解集不能包含重复的子集
- 累加所有子集的不重复的全排列。
python 代码
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ret = []
trace = []
ret.append([])
for i in range(len(nums),0,-1):
self.backtrace(nums,i,0,trace,ret)
return ret
def backtrace(self,nums,p,start,trace,ret):
if len(trace) == p:
ret.append(trace[:])
return
for i in range(start,len(nums)):
trace.append(nums[i])
self.backtrace(nums,p,i+1,trace,ret)
trace.pop()
s = Solution()
result = s.subsets([1,2,3])
print(result)