代码随想录 -- 回溯 -- 子集

78. 子集 - 力扣(LeetCode)

如果把子集问题、组合问题、分割问题都抽象为一棵树的话,那么组合问题和分割问题都是收集树的叶子节点,而子集问题是找树的所有节点!

遍历这个树的时候,把所有节点都记录下来,就是要求的子集集合。

思路:

递归参数:nums,for循环的起始index,path数组。

递归出口:当遍历完数组nums时,return。

单层递归逻辑:将nums[i]加入path数组中,调用递归函数,将path的最后一个元素pop出来。

要在每次进入递归函数时将path收集到result中。

python 复制代码
class Solution(object):
    def back(self,nums,index,path):
        self.result.append(path[:])
        if index>=len(nums):
            return
        for i in range(index,len(nums)):
            path.append(nums[i])
            self.back(nums,i+1,path)
            path.pop()

    def subsets(self, nums):
        self.result=[]
        self.back(nums,0,[])
        return self.result
相关推荐
kobesdu5 分钟前
开源3D激光SLAM算法的异同点、优劣势与适配场景总结
算法·3d·机器人·ros
ZC跨境爬虫7 分钟前
3D 地球卫星轨道可视化平台开发 Day13(卫星可视化交互优化+丝滑悬停聚焦)
前端·算法·3d·json·交互
水木流年追梦11 分钟前
CodeTop Top 100 热门题目(按题型分类)
算法·leetcode
Tisfy17 分钟前
LeetCode 1722.执行交换操作后的最小汉明距离:连通图
算法·leetcode·dfs·题解·深度优先搜索·连通图
不知名的老吴25 分钟前
案例教学:最长递增子序列问题
数据结构·算法·动态规划
样例过了就是过了25 分钟前
LeetCode热题100 杨辉三角
c++·算法·leetcode·动态规划
念越33 分钟前
算法每日一题 Day05|双指针解决盛最多水的容器问题
算法·力扣
_小草鱼_35 分钟前
【数据结构】栈和队列
数据结构·数组··队列
eggrall35 分钟前
Leetcode 最大连续 1 的个数 III(medium)
算法·leetcode·职场和发展
啊我不会诶35 分钟前
Educational Codeforces Round 120 (Rated for Div. 2) vp补题
c++·算法