Um problema de permutações (LeetCode), que encontra as permutações de um array [1,2,3], retorna um array vazio por meio de uma função recursiva de retrocesso. O console imprime o seguinte:
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
[[]]
Esta seria a solução adequada se o array não parecesse ser reinstanciado em cada chamada recursiva.
Aqui está o código:
/**
* @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]);
Por que estou recebendo um array vazio?