使用 js 编写一个排列函数输入一个数组返回这个数组所有排列的情况 比如传入123 返回 1221123132213231312321
可以使用递归的方式来实现排列函数。具体实现如下:
function permute(nums) {
let result = [];
function backtrack(nums, tempList) {
if (tempList.length === nums.length) {
result.push([...tempList]);
} else {
for (let i = 0; i < nums.length; i++) {
if (tempList.includes(nums[i])) {
continue;
}
tempList.push(nums[i]);
backtrack(nums, tempList);
tempList.pop();
}
}
}
backtrack(nums, []);
return result;
}
// 测试
console.log(permute([1, 2, 3])); // [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
这里使用了一个 backtrack 函数来进行递归。当 tempList 的长度等于 nums 的长度时,表示已经得到一个排列结果,将其加入到 result 数组中。否则,遍历 nums 数组,如果当前元素已经在 tempList 中,则跳过;否则,将当前元素添加到 tempList 中,继续递归调用 backtrack 函数;递归调用结束后,将 tempList 中最后一个元素弹出,继续下一个循环。
最后返回 result 数组即可
原文地址: http://www.cveoy.top/t/topic/hU3a 著作权归作者所有。请勿转载和采集!