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

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
相关推荐
励志的小陈28 分钟前
双指针算法--移除元素、删除有序数组中的重复项、合并两个有序数组
算法
hoiii1871 小时前
Mean Shift目标跟踪算法MATLAB实现
算法·matlab·目标跟踪
alphaTao1 小时前
LeetCode 每日一题 2026/3/23-2026/3/29
服务器·windows·leetcode
励志的小陈1 小时前
复杂度算法题——旋转数组(三种思路)
c语言·数据结构·算法
tankeven1 小时前
HJ151 模意义下最大子序列和(Easy Version)
c++·算法
Sirens.1 小时前
对顺序表以及双向链表的理解
数据结构·链表
不光头强1 小时前
力扣78子集题解
算法·leetcode·深度优先
独断万古他化1 小时前
【算法通关】二叉树中的深搜:DFS 递归解题套路
算法·二叉树·深度优先·dfs·递归
㓗冽1 小时前
2026.03.27(第三天)
数据结构·c++·算法
sali-tec1 小时前
C# 基于OpenCv的视觉工作流-章44-直线卡尺
图像处理·人工智能·opencv·算法·计算机视觉