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

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
相关推荐
SEO-狼术几秒前
Visualize Org Charts and Decision Trees in WinForms
算法·决策树·机器学习
UltraLAB-F2 分钟前
GPU显存不足时的分配策略:渲染与仿真的显存争夺战解决方案
图像处理·算法·3d·ai·硬件架构
沐苏瑶7 分钟前
Java算法之排序
java·算法·排序算法
Ricky111zzz10 分钟前
leetcode学python记录2
python·算法·leetcode·职场和发展
查古穆13 分钟前
二分查找-搜索二维矩阵
算法
会编程的土豆13 分钟前
【数据结构与算法】堆排序
开发语言·数据结构·c++·算法·leetcode
会编程的土豆15 分钟前
【数据结构与算法】希尔排序
数据结构·c++·算法·排序算法
邦爷的AI架构笔记22 分钟前
GLM-5.1 接入踩坑记录:用免费开源模型搭个 AI 代码审计小工具
后端·算法
苏宸啊23 分钟前
哈希扩展问题
算法·哈希算法
汀、人工智能30 分钟前
[特殊字符] 第73课:打家劫舍
数据结构·算法·数据库架构·图论·bfs·打家劫舍