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

相关推荐
Jonathan Star4 分钟前
CSS margin 折叠现象的实际代码示例
javascript·css·css3
咚咚咚小柒9 分钟前
【前端】Webpack相关(长期更新)
前端·javascript·webpack·前端框架·node.js·vue·scss
爱看科技10 分钟前
微美全息(NASDAQ:WIMI)容错量子计算赋能,大规模机器学习模型高效量子算法获突破
算法·机器学习·量子计算
我想进大厂13 分钟前
Python---数据容器(Set 集合)
开发语言·python
一路向前的月光20 分钟前
uniapp(5)滚动列表scroll-view
前端·javascript·uni-app
_dindong28 分钟前
牛客101:递归/回溯
数据结构·c++·笔记·学习·算法·leetcode·深度优先
Hilaku44 分钟前
就因为package.json里少了个^号,我们公司赔了客户十万块
前端·javascript·npm
刃神太酷啦1 小时前
力扣校招算法通关:双指针技巧全场景拆解 —— 从数组操作到环检测的高效解题范式
java·c语言·数据结构·c++·算法·leetcode·职场和发展
wu_jing_sheng01 小时前
销售数据分析
开发语言·python
西瓜树枝1 小时前
遗传算法与属性约简:原理、代码与参数配置
算法