
解题思路
- dfs 递归函数
- 首先判断是否所有位置都占据满了 即
path.length === letters.length,符合 push 进 res
- 如果站位已经占据,则 continue ,否则将占位符设置为 true
- 递归调用 dfs
- path.pop() used[i] = false 进行回溯
代码
var permute = function(letters) {
let res = [];
dfs(letters, [], Array(letters.length).fill(false), res);
return res;
}
function dfs(letters, path, used, res) {
if (path.length === letters.length) {
res.push([...path]);
return;
}
for (let i = 0; i < letters.length; i++) {
if (used[i]) continue;
path.push(letters[i]);
used[i] = true;
dfs(letters, path, used, res);
path.pop();
used[i] = false;
}
}