一、题目
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
二、示例
示例一:
输入: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]]
三、解题思路
本题应该采用递归的算法,并且在每一次循环过程中,我们都需要判断当前的数组中是否存在该元素,如果存在则不做任何操作,如果不存在,则将其加入数组中,然后将该数组进行下一次递归操作。递归的终止条件是:当前数组的长度 === nums的长度
。
四、代码
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function (nums) {
let result = []
let length = nums.length
const rec = (curArr) => {
if (curArr.length === length) {
result.push([...curArr])
return
}
for (let item of nums) {
if(!curArr.includes(item)) {
curArr.push(item)
rec(curArr)
curArr.pop()
}
}
}
rec([])
return result
};
五、总结
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123188061
内容来源于网络,如有侵权,请联系作者删除!