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;
};
相关推荐
xjt_090111 分钟前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
熊猫_豆豆13 分钟前
YOLOP车道检测
人工智能·python·算法
我是伪码农23 分钟前
Vue 2.3
前端·javascript·vue.js
艾莉丝努力练剑28 分钟前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
辰风沐阳1 小时前
JavaScript 的宏任务和微任务
javascript
偷吃的耗子1 小时前
【CNN算法理解】:CNN平移不变性详解:数学原理与实例
人工智能·算法·cnn
冰暮流星2 小时前
javascript之二重循环练习
开发语言·javascript·数据库
dazzle2 小时前
机器学习算法原理与实践-入门(三):使用数学方法实现KNN
人工智能·算法·机器学习
那个村的李富贵2 小时前
智能炼金术:CANN加速的新材料AI设计系统
人工智能·算法·aigc·cann
Mr Xu_2 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js