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

相关推荐
Mephisto.java18 分钟前
【力扣 | SQL题 | 每日四题】力扣2082, 2084, 2072, 2112, 180
sql·算法·leetcode
robin_suli19 分钟前
滑动窗口->dd爱框框
算法
丶Darling.21 分钟前
LeetCode Hot100 | Day1 | 二叉树:二叉树的直径
数据结构·c++·学习·算法·leetcode·二叉树
labuladuo52031 分钟前
Codeforces Round 977 (Div. 2) C2 Adjust The Presentation (Hard Version)(思维,set)
数据结构·c++·算法
wjs202436 分钟前
XSLT 实例:掌握 XML 转换的艺术
开发语言
萧鼎40 分钟前
Python第三方库选择与使用陷阱避免
开发语言·python
安冬的码畜日常42 分钟前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
jiyisuifeng199142 分钟前
代码随想录训练营第54天|单调栈+双指针
数据结构·算法
一颗星星辰1 小时前
C语言 | 第十章 | 函数 作用域
c语言·开发语言
lxp1997411 小时前
php函数积累
开发语言·php