题解 | #集合的所有子集(一)#

集合的所有子集(一)

http://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9

代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

@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
全部评论

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务