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

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
相关推荐
BirdenT8 小时前
20260424紫题训练
c++·算法
还是阿落呀8 小时前
基本控制结构
开发语言·c++·算法
样例过了就是过了8 小时前
LeetCode热题100 最长有效括号
c++·算法·leetcode·动态规划
wayz119 小时前
Day 18:Keras深度学习框架入门
人工智能·深度学习·神经网络·算法·机器学习·keras
一行代码一行诗++9 小时前
C语言中if的使用
c语言·c++·算法
AI科技星9 小时前
《基于 1 的 N 维分形与对称统一理论》
人工智能·算法·机器学习·数学建模·数据挖掘
wljy19 小时前
牛客每日一题(2026.4.30) 整数域二分
c语言·c++·算法·蓝桥杯·二分
水蓝烟雨9 小时前
3335. 字符串转换后的长度 I
算法·leetcode
Dxy12393102169 小时前
HTML 如何使用 SVG 画曲线
前端·算法·html
westdata-Tm9 小时前
洛谷P1219 [USACO1.5] 八皇后 Checker Challenge
算法·深度优先·dfs