羊蹓狼 发表于 2025-3-30 16:22:01

leetcode78-子集

leetcode 78
https://i-blog.csdnimg.cn/direct/93be465e26284abfb2d1fe2ee45c9213.png
思路

本题紧张考的是回溯
result用来存储结果值,path表示每层遍历存放的值,每次递归的时候path中的结果都是结果值,所以每次递归的时候需要先把path中的内容存入result中,当startIndex === nums.length时,说明已经遍历完所有元素则竣事递归
下面图中是所有的过程,以nums = 为例,图中pop()就是回溯的过程
https://i-blog.csdnimg.cn/direct/eb300ccf15c048be87a97e8d7ce43145.png
实现

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)
            backtracking(nums,i+1)
            path.pop(); // 回溯
      }
    }
    backtracking(nums,0)
    return result;
};

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: leetcode78-子集