代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
@param S int整型一维数组
@return int整型二维数组
#写了备注方便回头复习
def subsets(self , S: List[int]) -> List[List[int]]:
if not S:
return [[]]
res = []
#每次把一个res送进下一层递归里,这样下一层初始就是[1],[2]这种,在下一层就是[1,2],[1,3]这种
def dfs(dummy,tmp): #dummy用来标记哪层递归
res.append(tmp[:])#每次到下一层递归的时候,这个tmp就本身也是一种子集,所以先加入答案里
for i in range(dummy,len(S)):
tmp.append(S[i])
dfs(i+1,tmp) #带上有点东西的tmp从‘1开始’到‘2开始’。
tmp.pop() #把tmp清空,方便本层遍历时不会累计,每次递归的一遍遍历只加入一个值
dfs(0,[])
return res