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

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
相关推荐
pq2176 小时前
java实现遗传算法
算法
木井巳7 小时前
【递归算法】单词搜索
java·算法·leetcode·决策树·深度优先
咚咚王者7 小时前
人工智能之RAG工程 第一章 RAG 基础与前置知识
人工智能·算法
handler017 小时前
【算法模板】最小生成树:稠密图选 Prim,稀疏图选 Kruskal
c语言·数据结构·c++·算法
Chase_______8 小时前
LeetCode 2461 & 1423:定长滑窗变体精讲,从 HashMap 判重到正难则反的转化技巧
算法·leetcode·职场和发展
此生决int8 小时前
快速复习之数据结构篇——栈和队列
数据结构·c++
WL_Aurora8 小时前
【每日一题】二分算法
python·算法
昵称小白8 小时前
子串专题部分
数据结构·算法·哈希算法
H_BB8 小时前
第17届蓝桥杯备战历程
c++·算法·职场和发展·蓝桥杯
anew___9 小时前
算法分析与设计课程全算法核心概述|期末复习+知识梳理
算法