js全排列组合算法(基于递归回溯)

function permute(nums) {

let result = []; // 存放结果的数组

function backtracking(tempList, nums) {

if (nums.length === 0) {

result.push([...tempList]); // 将当前路径添加到结果数组中

return;

}

for (let i = 0; i < nums.length; i++) {

tempList.push(nums[i]); // 选取当前元素并添加到临时列表中

const remainingNums = [...nums]; // 复制原始数组作为新的子集

remainingNums.splice(i, 1); // 移除已经处理过的元素

backtracking(tempList, remainingNums); // 进入下一层递归

tempList.pop(); // 回溯,从临时列表中删除最后一个元素

}

}

backtracking([], nums); // 调用递归函数开始计算所有排列组合

return result;

}

// 示例输入

const inputArray = [1, 2, 3];

console.log(permute(inputArray));

相关推荐
骑着猪去兜风.21 分钟前
线段树(二)
数据结构·算法
粉末的沉淀25 分钟前
css:制作带边框的气泡框
前端·javascript·css
p***h6432 小时前
JavaScript在Node.js中的异步编程
开发语言·javascript·node.js
fengfuyao9852 小时前
竞争性自适应重加权算法(CARS)的MATLAB实现
算法
散峰而望2 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
leoufung2 小时前
LeetCode 92 反转链表 II 全流程详解
算法·leetcode·链表
Porunarufu2 小时前
Java·关于List
java·开发语言
N***73852 小时前
Vue网络编程详解
前端·javascript·vue.js
子不语1802 小时前
Python——函数
开发语言·python
wyhwust2 小时前
交换排序法&冒泡排序法& 选择排序法&插入排序的算法步骤
数据结构·算法·排序算法