一直困惑的一个点就是回溯后也都是为false不是会重复吗
但是回溯之后回到循环进行弹栈和置为false,接着进行的是下一轮循环,下标不一样
对应的值就不一样了,等于说数组元素都进行回溯了一遍,所以是不会重复的
var permute = function(nums) {
const res = [], path = [];
function backtracking(n, k, used){
if(path.length == k){
res.push(Array.from(path));
return;
}
for(let i = 0; i < k; i++){
if(used[i]) continue;
path.push(n[i]);
used[i] = true;
backtracking(n, k, used);
path.pop();
used[i] = false;
}
}
}
全排列(一些解惑的点)
最新推荐文章于 2024-05-09 15:15:12 发布