用DFS实现,两个要点,一是控制每次遍历列表时的范围,二是要把遍历的每个值加到临时列表。
DFS的返回可以由遍历结束来控制。
递归:在递归调用之前的部分称作递,调用之后的部分称作归。
class Solution(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
def dfs(n,tmp):
res.append(tmp)
for i in range(n,e):
dfs(i+1,tmp+[nums[i]])
res=[]
e=len(nums)
dfs(0,[])
return res