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;
};
相关推荐
子兮曰3 小时前
OpenClaw架构揭秘:178k stars的个人AI助手如何用Gateway模式统一控制12+通讯频道
前端·javascript·github
百锦再3 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
百锦再3 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
颜酱5 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919105 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878385 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
DuHz5 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
小迷糊的学习记录5 小时前
Vuex 与 pinia
前端·javascript·vue.js
发现一只大呆瓜6 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
Polaris北极星少女6 小时前
TRSV优化2
算法