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;
};
相关推荐
Amumu1213815 分钟前
Js:正则表达式(一)
开发语言·javascript·正则表达式
KAU的云实验台43 分钟前
单/多UAV、静/动态路径规划,基于PlatEMO平台的带约束多目标优化 本文核心内容:
算法·matlab·无人机
Liangwei Lin1 小时前
洛谷 P1807 最长路
数据结构·算法
会编程的土豆1 小时前
【数据结构与算法】二叉树从建立开始
数据结构·c++·算法
_日拱一卒1 小时前
LeetCode:最大子数组和
数据结构·算法·leetcode
计算机安禾1 小时前
【数据结构与算法】第22篇:线索二叉树(Threaded Binary Tree)
c语言·开发语言·数据结构·学习·算法·链表·visual studio code
算法鑫探2 小时前
解密2025数字密码:数位统计之谜
c语言·数据结构·算法·新人首发
计算机安禾2 小时前
【数据结构与算法】第21篇:二叉树遍历的经典问题:由遍历序列重构二叉树
c语言·数据结构·学习·算法·重构·visual studio code·visual studio
信奥胡老师2 小时前
P1255 数楼梯
开发语言·数据结构·c++·学习·算法
月光宝盒造梦师2 小时前
Ant Design Ellipsis 中的判断逻辑 isEleEllipsis 方法非常消耗性能
javascript·react·优化