题目描述
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
思路
假设第一个测试用例为
nums = [1]那么最终的结果
result = [[1]]第二个测试用例为
nums = [1,2]那么结果
result = [[2,1],[1,2]]
如果说看到这里还没有发现规律的话,可以看看下面思路
假设我们的测试值为1,2,3
一开始取一个值出来进行排列
1那么排列之后的结果就是
[[1]]这个时候我们再取一个值
2,在前面排列的基础上再排列这个时候就是不断的调整2的位置,这个2可以在1的前面,也可以在1的后面
经过排列之后的结果就是
[[2,1],[1,2]]这个时候再将3也加入进来
得到最终结果
代码
const fn = (nums) =>{
let result = [[nums[0]]]
for(let i = 1;i<nums.length;i++){ //这个循环遍历nums
console.log(nums[i]);
let temp = []
for(let j=0;j<result.length;j++){//这个循环遍历result
console.log(result[j]);
for(let n=0;n<=result[0].length;n++){
let arr = [...result[j]]
arr.splice(n,0,nums[i])
console.log(arr);
temp.push(arr)
}
}
result = temp
}
console.log(result)
return result
}