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;
};
相关推荐
wen__xvn4 分钟前
每日一题洛谷P8716 [蓝桥杯 2020 省 AB2] 回文日期c++
c++·算法·蓝桥杯
指针满天飞8 分钟前
同步、异步、Promise、then、async/await
前端·javascript·vue.js
梭七y8 分钟前
【力扣hot100题】(027)两数相加
算法·leetcode·职场和发展
破东风13 分钟前
leetcode每日一题:向字符串添加空格
算法·leetcode·模拟
rigidwill66614 分钟前
LeetCode hot 100—二叉搜索树中第K小的元素
数据结构·c++·算法·leetcode·职场和发展
银河小铁骑plus18 分钟前
力扣hot100_贪心算法
算法·leetcode·贪心算法
小郝 小郝22 分钟前
(C语言)指针运算 习题练习1.2(压轴难题)
java·开发语言·算法
welkin35 分钟前
算法区间合并问题
前端·算法
Mintopia42 分钟前
Three.js高效几何体创建指南:BufferGeometry深度解析
前端·javascript·three.js
Mintopia1 小时前
vue3 element-plus 二次封装Drawer抽屉,关闭时添加二次对话,开箱即用
前端·javascript·vue.js