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

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
相关推荐
蓦然回首却已人去楼空18 分钟前
【分词:中文分词】BPE字节级分词算法实现汉字表达!
java·算法·中文分词
3DVisionary25 分钟前
aero-engine-blade-thermal-fatigue-dic-inspection
人工智能·算法·机器学习·航空发动机·高温dic·涡轮叶片·热疲劳
Kurisu57531 分钟前
深度拆解:从二进制切片到并发控制,大文件断点续传的底层工程设计
算法
梦想的颜色40 分钟前
MySQL 数据存储结构与查询执行生命周期深度解析
运维·数据结构·数据库·mysql·线程·优化
Ameilide1 小时前
数据结构 算法解释,排序、查找
数据结构
随意起个昵称1 小时前
线性dp-LIS题目2(导弹拦截III)
算法·动态规划·图论
地平线开发者1 小时前
工具链使用从入门到顺手
算法
明航咨询—张老师1 小时前
AI工具狂飙时代:三款实用AI产品深度横向测评
大数据·人工智能·算法·it
医用门2 小时前
医院钢制门厂家有哪些品牌好的
leetcode
真实的菜2 小时前
Redis 从入门到精通(二):深入数据结构 —— 从 RedisObject 到 SkipList 的源码级拆解
数据结构·redis·skiplist