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

相关推荐
qq_365911603 分钟前
WPF 五子棋项目文档
开发语言
学习编程的gas16 分钟前
数据结构——二叉树
数据结构·算法
叶浩成52026 分钟前
arco-design-vue:给<a-table>组件每一行添加data-id属性,并根据id数组是否包含此行id进行样式处理
前端·javascript·vue.js
我自纵横202328 分钟前
Vue 3 中 ref 与 reactive 的对比
前端·javascript·vue.js·typescript·前端框架·html5
在掘金39 分钟前
【kk-utils】树结构工具——tree
前端·javascript
its_a_win41 分钟前
蓝桥杯 2023省B 飞机降落 dfs
c++·算法·蓝桥杯
叶小秋42 分钟前
每日前端小技巧 - 优雅处理请求重试
前端·javascript
一半炙热燃烧42 分钟前
图解JS继承方式
javascript
你不会困1 小时前
什么?每天早上准时9点给你发送github项目推荐邮件
前端·javascript·nestjs