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