【 每天学习一点算法 2026/03/19】子集

每天学习一点算法 2026/03/19

题目:子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

依然跟之前的题类似,还是看做一个树,每个节点的子节点有两种选择,选或者不选,然后递归遍历出所有的路径就行了

typescript 复制代码
function subsets(nums: number[]): number[][] {
  const resArr = []
  function hepler (surplus: number[], res: number[]) {
    if (surplus.length === 0) {
      // 数字选择完毕,保存结果,回归上层
      resArr.push(res)
      return
    }
    const currentNums = [...surplus] // 不改动当前层的 剩余数字数组
    const current = currentNums.shift() // 取出当前层选择的数字
    // 不选
    hepler(currentNums, [...res])
    // 选
    hepler(currentNums, [...res, current])
  }
  hepler(nums, [])
  return resArr
};

题目来源:力扣(LeetCode)

相关推荐
世人万千丶16 小时前
Flutter 框架跨平台鸿蒙开发 - 恐惧清单应用
学习·flutter·华为·开源·harmonyos·鸿蒙
yuzhuanhei16 小时前
Visual Studio 配置C++opencv
c++·学习·visual studio
小O的算法实验室16 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
此刻觐神17 小时前
IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
linux·服务器·学习
憧憬从前18 小时前
算法学习记录DAY2
学习
郭涤生18 小时前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
༾冬瓜大侠༿18 小时前
vector
c语言·开发语言·数据结构·c++·算法
babe小鑫18 小时前
会计岗位学习数据分析的价值分析
学习·数据挖掘·数据分析
千枫s18 小时前
电脑vm虚拟机kali linux安装shannon
学习·网络安全
zjnlswd18 小时前
tkinter学习案例--笔记代码
笔记·学习