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

相关推荐
无限进步_7 分钟前
C语言字符串与内存操作函数完全指南
c语言·c++·算法
lly20240610 分钟前
AJAX JSON 实例
开发语言
rengang6615 分钟前
07-逻辑回归:分析用于分类问题的逻辑回归模型及其数学原理
人工智能·算法·机器学习·分类·逻辑回归
Zzzzmo_20 分钟前
【Java】杨辉三角、洗牌算法
java·数据结构·算法
闻缺陷则喜何志丹20 分钟前
【C++贪心】P10537 [APIO2024] 九月|普及+
c++·算法·贪心·洛谷
QiZhang | UESTC21 分钟前
JAVA算法练习题day27
java·开发语言·c++·算法·leetcode·hot100
坚持就完事了23 分钟前
2-C语言中的数据类型
c语言·开发语言
饼干吖36 分钟前
记一次滑动数组解题
java·算法
ss2731 小时前
手写MyBatis第96弹:异常断点精准捕获MyBatis深层BUG
java·开发语言·bug·mybatis
小马爱打代码1 小时前
分布式锁:原理算法和使用建议
分布式·算法