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;
};
相关推荐
许我半盏清茶4 分钟前
JavaScript 原型与原型链完全指南
javascript
xuankuxiaoyao6 分钟前
vue.js 设计与开发 ---路由
前端·javascript·vue.js
ZC跨境爬虫9 分钟前
跟着 MDN 学CSS day_6:(伪类和伪元素详解)
前端·javascript·css·数据库·ui·html
idcu10 分钟前
Lyt.js + Vite 快速开发指南
前端·typescript
搞科研的小刘选手12 分钟前
【大连市计算机学会主办】第三届图像处理、智能控制与计算机工程国际学术会议(IPICE 2026)
图像处理·人工智能·深度学习·算法·计算机·数据挖掘·智能控制
idcu13 分钟前
深入 Lyt.js 路由系统:L6 生态系统层的核心
前端·typescript
idcu13 分钟前
用 Lyt.js 构建 Todo 应用:完整教程
前端·typescript
人月神话-Lee14 分钟前
【图像处理】高斯模糊——最优雅的模糊算法
图像处理·人工智能·算法·ios·ai编程·swift
大熊背26 分钟前
双目拼接竖缝消除(ISP 分区锐化实操方案) 优化方案
人工智能·算法·双目拼接
Sylus_sui27 分钟前
实现:每行固定 5 个、自动换行、最后一行左对齐、数量不固定
前端·javascript·css