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

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
相关推荐
cwplh9 分钟前
平衡树学习笔记
数据结构·笔记·学习·算法
wen__xvn16 分钟前
天梯赛L2刷题(也就写写水题骗骗自己了)
算法
EllinY19 分钟前
扩展欧几里得算法 exgcd 详解
c++·笔记·数学·算法·exgcd
AI科技星32 分钟前
三维网格—素数对偶性及其严格证明(全域数学·统一基态演化版)
算法·数学建模·数据挖掘
诸葛务农44 分钟前
光电对抗:多模复合制导烟雾干扰外场试验及仿真(4)
人工智能·算法·光电对抗
WolfGang0073211 小时前
代码随想录算法训练营 Day39 | 动态规划 part12
算法·动态规划
阿Y加油吧1 小时前
动态规划经典题解:最长递增子序列 & 乘积最大子数组
算法·动态规划·代理模式
f3iiish1 小时前
3783. 整数的镜像距离 力扣
算法·leetcode
Not Dr.Wang4221 小时前
基于matlab的控制系统奈氏图及其稳定性分析
数据结构·算法·matlab
闻缺陷则喜何志丹1 小时前
【排序 离散化 二维前缀和】 P7149 [USACO20DEC] Rectangular Pasture S|普及+
c++·算法·排序·离散化·二维前缀和