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

78. 子集 - 力扣(LeetCode)

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

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

思路:

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

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

单层递归逻辑:将numsi加入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
相关推荐
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出多任务下载器中的“独特下载速度“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Discipline10291 小时前
尼泊尔河流流量:天气驱动的预测与高流量风险
人工智能·算法
XuCoder2 小时前
改一个数,右边全得重算,这题怎么扛住两万次查询
算法
小羊没烦恼!2 小时前
在Scrum中实施敏捷建模
java·开发语言·windows·算法·c#
weixin_307779132 小时前
基于睿擎工业开发平台的预训练视觉模型轻量化适配与低代码部署优化
开发语言·算法
hold?fish:palm3 小时前
45 二叉树的右视图
开发语言·c++·算法
粤鼎恒业3 小时前
惠州工厂电子料回收厂家推荐:从交接单反推筛选标准
大数据·数据库·算法·硬件架构·硬件工程·pcb工艺·材料工程
小爷毛毛(卓寿杰)3 小时前
【Agent 意图识别】输出协议、评估与置信度
人工智能·算法·大模型·prompt·大语言模型·agent
优质酸酸乳3 小时前
力扣100题之21合并两个有序链表
算法·leetcode·链表
旖旎夜光4 小时前
LeetCode 137 : 只出现一次的数字 II(位运算) —— 题解
c++·笔记·学习·算法·leetcode·力控