JavaScript - 全排列1(回溯法)
2020-07-26 本文已影响0人
ElricTang
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
完整代码:
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
let arr = nums.sort((m, n)=> m - n);
let res = [];
function def(n, path) {
for (let i = 0; i < n.length; i++) {
let curPath = [...path, n[i]];
let copy = [...n];
copy.splice(i, 1);
if (curPath.length === arr.length) res.push(curPath);
if (copy.length > 0) def(copy, curPath);
}
}
def(arr, []);
return res;
};