使用 JavaScript 对无重复元素的数组进行全排列
程序员文章站
2022-06-23 11:42:08
1、题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。2、解题思路1、回溯算法2、准备一个容器数组用来存放全排列的各种情况3、准备一个小数组容器用来放每一种排列的情况4、定义回溯函数用来判断数组是否符合情况4.1、遍历以原始数组元素为根节点的数,可以想象原始数组元素的根节点是空数组4.2、将小数组容器中未出现的元素push()进去4.3、进入回溯函数进行判断,如果满足开头的判断条件则添加进容器数组4.4、否则再次添加未出现的元素,进入回溯函数4.5、将末尾元素pop()出...
1、题目描述
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
2、解题思路
1、回溯算法
2、准备一个容器数组用来存放全排列的各种情况
3、准备一个小数组容器用来放每一种排列的情况
4、定义回溯函数用来判断数组是否符合情况
4.1、遍历以原始数组元素为根节点的数,可以想象原始数组元素的根节点是空数组
4.2、将小数组容器中未出现的元素push()进去
4.3、进入回溯函数进行判断,如果满足开头的判断条件则添加进容器数组
4.4、否则再次添加未出现的元素,进入回溯函数
4.5、将末尾元素pop()出去,就是节点回溯
5、把所有元素的树遍历完后即完成全排列
6、返回容器数组,即为所求全排列的所有情况
3、解题代码
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
let len = nums.length;
let res = [];
let arr = [];
let backTrack = (arr) => {
if (arr.length == len) {
res.push(arr);
return;
}
for (let i=0; i<len; i++) {
if (!arr.includes(nums[i])) {
arr.push(nums[i]);
backTrack(arr.slice());
arr.pop();
}
}
}
backTrack(arr);
return res;
}
本文地址:https://blog.csdn.net/qq_24264965/article/details/109265162