leetcode78-子集

leetcode 78

思路

本题主要考的是回溯

result用来存储结果值,path表示每层遍历存放的值,每次递归的时候path中的结果都是结果值,所以每次递归的时候需要先把path中的内容存入result中,当startIndex === nums.length时,说明已经遍历完所有元素则结束递归

下面图中是所有的过程,以nums = [1,2,3]为例,图中pop()就是回溯的过程

实现

js 复制代码
var subsets = function(nums) {
    let result = [],path = [];
    const backtracking = (nums,startIndex)=>{
        result.push([...path])
        if(nums.length === startIndex) return;
        for(let i = startIndex;i < nums.length;i++){
            path.push(nums[i])
            backtracking(nums,i+1)
            path.pop(); // 回溯
        }
    }
    backtracking(nums,0)
    return result;
};
相关推荐
hellsing7 分钟前
UniPush 2.0 实战指南:工单提醒与多厂商通道配置
前端·javascript
sprintzer9 分钟前
12.06-12.15力扣分治法刷题
算法·leetcode
月明长歌9 分钟前
【码道初阶】【牛客BM30】二叉搜索树与双向链表:java中以引用代指针操作的艺术与陷阱
java·数据结构·算法·leetcode·二叉树·笔试·字节跳动
hoiii18711 分钟前
使用RPCA算法对图像进行稀疏低秩分解
人工智能·算法
yuuki23323315 分钟前
【C++】内存管理
java·c++·算法
刃神太酷啦19 分钟前
Linux 进程核心原理精讲:从体系结构到实战操作(含 fork / 状态 / 优先级)----《Hello Linux!》(6)
java·linux·运维·c语言·c++·算法·leetcode
king王一帅20 分钟前
告别 AI 输出的重复解析:正常 markdown 解析渲染也能提速 2-10 倍以上
前端·javascript·ai编程
一个不知名程序员www20 分钟前
算法学习入门---二叉树
c++·算法
小李小李快乐不已20 分钟前
数组&&矩阵理论基础
数据结构·c++·线性代数·算法·leetcode·矩阵
dudke21 分钟前
js的reduce详解
开发语言·javascript·ecmascript