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));

相关推荐
极客代码2 分钟前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow
疯一样的码农9 分钟前
Python 正则表达式(RegEx)
开发语言·python·正则表达式
passer__jw76710 分钟前
【LeetCode】【算法】283. 移动零
数据结构·算法·leetcode
光影少年11 分钟前
vue2与vue3的全局通信插件,如何实现自定义的插件
前端·javascript·vue.js
Ocean☾16 分钟前
前端基础-html-注册界面
前端·算法·html
Rattenking16 分钟前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
顶呱呱程序24 分钟前
2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
算法·matlab·音视频·matlab-gui·音频滤波·脉冲响应不变法
&岁月不待人&31 分钟前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
StayInLove34 分钟前
G1垃圾回收器日志详解
java·开发语言
无尽的大道42 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化