给定数组 [0,1,2,3],要求输出其全排列:结果如下
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
let matrix = [];
const subfunc = (arr, temp) => {
// 终止条件:也就是排列结果
if (arr.length === 0) {
matrix.push(temp)
return
}
// 思路:将数组中的值得每一项都拿到首位进行排列
for (let i = 0, len = arr.length; i < len; i++) {
let newarr = arr.slice(0, i).concat(arr.slice(i+1))
// console.log('------------', i, '-----------', newarr, temp.concat(arr[i]));
// 将数组中的值得每一项都拿到首位进行排列:temp.concat([])
subfunc(newarr, temp.concat(arr[i]))
}
}
subfunc(nums, [])
return matrix;
};
console.log(permute([0,1,2,3]));