全排列
2022/07/03
示例
示例一
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例二
输入:nums = [0,1]
输出:[[0,1],[1,0]]
示例三
输入:nums = [1]
输出:[[1]]
题解
递归法
function swap(nums, i, j) {
const temp = nums[j]
nums[j] = nums[i]
nums[i] = temp
}
function backtrack(n, output, res, first) {
if (first === n) {
// 这里不能只是把output的引用塞进去,需要copy一份
res.push(output.slice())
}
for (let i = first; i < n; i++) {
// 交换first和i的位置
swap(output, first, i)
backtrack(n, output, res, first + 1)
// 撤销操作
swap(output, first, i)
}
}
var permute = function (nums) {
const res = []
const output = nums.slice()
const n = nums.length
backtrack(n, output, res, 0)
return res
};