题目:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:
输入:nums = [0,1]
输出:[[0,1],[1,0]]示例 3:
输入:nums = [1]
输出:[[1]]提示:
1 <= nums.length <= 6-10 <= nums[i] <= 10nums 中的所有整数 互不相同类似于数学中的排列组合,列举出给定数组中所有的排列可能。
循环数组,每次取一个元素,接着循环数组,再取一个元素...,直至取 nums.length 次,将结果存入结果集中。
所以,需要递归,(取过一次的元素不能再取。)
var permute = function(nums) {
const result = [];
const dfs = (currentArr, index) => {
if (currentArr.length === nums.length) {
result.push(currentArr)
return
}
for (let i = 0; i < nums.length; i++) {
if (currentArr.includes(nums[i])) continue; // 判断当前元素是否取过,如果取过,直接跳过本次循环
dfs([...currentArr, nums[i]], index + 1);
}
}
dfs([], 0);
return result;
};