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

集合的所有子集(一)

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

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
02-26 09:15
已编辑
蚌埠学院 golang
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务