【 每天学习一点算法 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)

相关推荐
我能坚持多久1 小时前
【初阶数据结构11】——链式二叉树知识补充
数据结构·算法
Purple Coder2 小时前
龙华寺-我会发顶刊的
学习
liuyao_xianhui2 小时前
优选算法_两数之和_位运算_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
靠沿2 小时前
【优选算法】专题十六——BFS解决最短路径问题
redis·算法·宽度优先
博风2 小时前
算法:双指针解:盛最多水的容器
算法·leetcode
今儿敲了吗2 小时前
python基础学习笔记第五章——容器
笔记·python·学习
知识分享小能手2 小时前
edis入门学习教程,从入门到精通,Redis编程开发知识点详解(4)
数据库·redis·学习
夏乌_Wx2 小时前
图 | 3道LeetCode常见笔试、面试题汇总
算法
ZPC82102 小时前
PPO训练小车
人工智能·算法·机器人