一个 LeetCode 的排列问题,求数组 [1,2,3] 的排列,通过回溯递归函数返回一个空数组。控制台打印出以下内容:
Input
nums =
[1,2,3]
Stdout
[ [ 1, 2, 3 ] ]
[ [ 1, 3, 2 ] ]
[ [ 2, 1, 3 ] ]
[ [ 2, 3, 1 ] ]
[ [ 3, 1, 2 ] ]
[ [ 3, 2, 1 ] ]
Output
[[]]
如果数组似乎没有在每次递归调用时重新实例化,那么这将是正确的解决方案。
以下是代码:
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
let s = [], a = [];
return findPerm(nums, s, a);
};
var findPerm = function(nums, stack, ans){
if(nums.length === stack.length){
if(ans.indexOf(stack) === -1)
ans.push(stack);
console.log(ans);
}
for(let num of nums){
if(stack.indexOf(num) === -1){
stack.push(num);
findPerm(nums, stack, ans);
stack.pop();
}
}
return ans;
};
permute([1,2,3]);
为什么我返回的是一个空数组?