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;
};
相关推荐
英宋2 分钟前
ckeditor5的研究 (2):对 CKEditor5 进行设计,并封装成一个可用的 vue 组件
前端·javascript
古夕2 分钟前
搞定滚动穿透
前端·javascript
英宋2 分钟前
ckeditor5的研究 (3):初步使用 CKEditor5 的 事件系统 和 API
前端·javascript
Danta7 分钟前
从 0 开始学习 Three.js(2)😁
前端·javascript·three.js
凌辰揽月8 分钟前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
就是我12 分钟前
开发“业务组件库”,该从哪里入手?
前端·javascript·面试
lifallen13 分钟前
深入浅出 Arrays.sort(DualPivotQuicksort):如何结合快排、归并、堆排序和插入排序
java·开发语言·数据结构·算法·排序算法
jingfeng51414 分钟前
数据结构排序
数据结构·算法·排序算法
Mintopia14 分钟前
在数字画布上雕刻曲线:NURBS 的奇幻冒险之旅
前端·javascript·计算机图形学
Mintopia22 分钟前
Three.js 力导向图:让数据跳起优雅的华尔兹
前端·javascript·three.js