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

相关推荐
Hello World . .几秒前
数据结构:二叉树(Binary tree)
c语言·开发语言·数据结构·vim
WBluuue几秒前
数据机构与算法:dp优化——倍增优化
c++·算法·leetcode·动态规划
叫我辉哥e12 分钟前
新手进阶Python:办公看板升级交互式可视化+移动端适配+多终端同步
开发语言·python
1candobetter7 分钟前
JAVA后端开发——Spring Boot 组件化自动配置机制
java·开发语言·spring boot
一个网络学徒11 分钟前
python练习3
开发语言·python
范纹杉想快点毕业12 分钟前
嵌入式实时系统架构设计:基于STM32与Zynq的中断、状态机与FIFO架构工程实战指南,基于Kimi设计
c语言·c++·单片机·嵌入式硬件·算法·架构·mfc
lovod13 分钟前
【视觉SLAM十四讲】建图
算法·视觉slam
专注VB编程开发20年15 分钟前
无 $ 后缀的变体版函数(Mid、InStr)
java·开发语言
程序员敲代码吗15 分钟前
C++运行库修复指南:解决游戏办公软件报错问题
开发语言·c++·游戏
SmartBrain19 分钟前
AI算法工程师面试:大模型和智能体知识(含答案)
人工智能·算法·语言模型·架构·aigc