【力扣100】78.子集

添加链接描述

python 复制代码
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        # 思路是回溯,这道题和【全排列】不一样的地方是出递归(收获)的判断条件不一样
        def dfs(path,index,res):
            res.append(path[:])
            for i in range(index,len(nums)):
                path.append(nums[i])
                dfs(path,i+1,res)
                path.pop()
        
        res=[]
        dfs([],0,res)
        return res

思路是:

  1. 回溯和递归
  2. 我怎么感觉这种题背下来就好?

解法二

python 复制代码
class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        # 思路是每一个元素都有取和不取两种选择:
        def backtrack(path,index,res):
            if index==len(nums):
                res.append(path[:])
                return
            backtrack(path+[nums[index]],index+1,res)
            backtrack(path,index+1,res)
        res=[]
        backtrack([],0,res)
        return res

思路是:

  1. 每一个元素都有选和不选两个选择
相关推荐
前端小L12 小时前
回溯算法专题(五):去重与剪枝的双重奏——攻克「组合总和 II」
算法·剪枝
TL滕13 小时前
从0开始学算法——第三天(数据结构的多样性)
数据结构·笔记·学习·算法
V1ncent Chen13 小时前
人工智能的基石之一:算法
人工智能·算法
无限进步_13 小时前
深入理解顺序表:从原理到完整实现
c语言·开发语言·数据结构·c++·算法·链表·visual studio
兩尛13 小时前
欢乐周末 (2025B卷
算法
liu****13 小时前
九.操作符详解
c语言·开发语言·数据结构·c++·算法
ALex_zry13 小时前
C语言底层编程与Rust的现代演进:内存管理、系统调用与零成本抽象
c语言·算法·rust
TheLegendMe13 小时前
动态规划Day01
算法·动态规划
666HZ66613 小时前
C语言——交换
c语言·c++·算法
我爱鸢尾花13 小时前
RNN公式推导、案例实现及Python实现
人工智能·python·rnn·深度学习·神经网络·算法