leetcode 78
思路
本题紧张考的是回溯
result用来存储结果值,path表示每层遍历存放的值,每次递归的时候path中的结果都是结果值,所以每次递归的时候需要先把path中的内容存入result中,当startIndex === nums.length时,说明已经遍历完所有元素则竣事递归
下面图中是所有的过程,以nums = [1,2,3]为例,图中pop()就是回溯的过程
实现
- 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;
- };
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |