📝题目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
|
📝思路
老经典回溯了,复盘一下,这次用 JS 写的,res
一直不对劲,看了题解才发现坑在于数组(对象)都是传的引用,push
的时候当然也是一直传进去了(同)一个地址,后续改变 trackList
的时候 res
里面就变成了一堆同样的数组:(
📝题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| function track(nums, res, trackList) { if (trackList.length == nums.length) { res.push(trackList.concat()); return; } for (let i = 0; i < nums.length; i++) { if (trackList.indexOf(nums[i]) == -1) { trackList.push(nums[i]); track(nums, res, trackList); trackList.pop(); } } }
var permute = function(nums) { let res = new Array(), trackList = new Array(); track(nums, res, trackList); return res; };
|