一、题目描述
二、分析
使用递归的思想,每次递归时,携带上一次的不完整数组,直到数组长度等于参数nums的长度,证明已经排列完了,可以存进结果数组了。
类似与二叉树的深度优先遍历(dfs)。
三、代码
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
if(nums.length === 0) return [];
const res = [];
const dfs = (currentArr) => {
if(currentArr.length === nums.length){
res.push(currentArr);
return;
}
nums.forEach(i => {
if(!currentArr.includes(i)) dfs([...currentArr, i])
})
}
dfs([]);
return res;
};