leetcode78-子集

打印 上一主题 下一主题

主题 1608|帖子 1608|积分 4824

leetcode 78

思路

本题紧张考的是回溯
result用来存储结果值,path表示每层遍历存放的值,每次递归的时候path中的结果都是结果值,所以每次递归的时候需要先把path中的内容存入result中,当startIndex === nums.length时,说明已经遍历完所有元素则竣事递归
下面图中是所有的过程,以nums = [1,2,3]为例,图中pop()就是回溯的过程

实现

  1. var subsets = function(nums) {
  2.     let result = [],path = [];
  3.     const backtracking = (nums,startIndex)=>{
  4.         result.push([...path])
  5.         if(nums.length === startIndex) return;
  6.         for(let i = startIndex;i < nums.length;i++){
  7.             path.push(nums[i])
  8.             backtracking(nums,i+1)
  9.             path.pop(); // 回溯
  10.         }
  11.     }
  12.     backtracking(nums,0)
  13.     return result;
  14. };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表