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

集合的所有子集(一)

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

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务