题目
题解
这道题可以使用dfs+回溯
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
// 结果
const res = [];
// 初始值
let level = 0;
// 数组交换位置
const warp = (l, r) => {
[nums[l], nums[r]] = [nums[r], nums[l]]
}
// dfs+回溯
const backtracking = (level) => {
// 递归出口
if(level == nums.length - 1) {
res.push([...nums]);
return;
}
// 遍历
// i = level 需要想想
for(let i = level; i < nums.length; i++) {
warp(i, level); // 交换位置
backtracking(level+1); // 递归
warp(i, level) // 恢复
}
}
backtracking(level)
return res;
};