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

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
相关推荐
nlpming8 分钟前
OpenClaw 代码解析
算法
学习永无止境@11 分钟前
MATLAB中矩阵转置
算法·matlab·fpga开发·矩阵
七颗糖很甜12 分钟前
雨滴谱数据深度解析——从原始变量到科学产品的Python实现【下篇】
python·算法·pandas
nlpming12 分钟前
OpenClaw system prompt定义
算法
nlpming12 分钟前
OpenClaw安装配置及简介
算法
爱码小白13 分钟前
MySQL 常用数据类型的系统总结
数据库·python·算法
玛丽莲茼蒿20 分钟前
Leetcode hot100 【中等】括号生成
算法·leetcode·职场和发展
小欣加油22 分钟前
leetcode 128 最长连续序列
c++·算法·leetcode·职场和发展
汀、人工智能35 分钟前
[特殊字符] 第94课:删除无效的括号
数据结构·算法·数据库架构·图论·bfs·删除无效的括号
pwn蒸鱼41 分钟前
leetcode:92. 反转链表 II
算法·leetcode·链表