JavaScript数组全排列算法优化: 包含子数组结果并去重
{/'title/':/'JavaScript数组全排列算法优化: 包含子数组结果并去重/',/'description/':/'本文介绍了一种改进的 JavaScript 数组全排列算法,该算法不仅输出所有排列结果,还输出所有子数组的结果,并去重。优化后的算法使用递归的方式实现,并利用 JSON.stringify 方法来比较数组内容。/',/'keywords/':/'JavaScript, 数组, 全排列, 算法, 优化, 子数组, 去重, 递归, JSON.stringify/',/'content/':/'const permute = (arr) => {//n const results = [];//n //n const generatePermutations = (arr, perm) => {//n if (arr.length === 0) {//n results.push(perm);//n return;//n }//n //n for (let i = 0; i < arr.length; i++) {//n const newArr = [...arr.slice(0, i), ...arr.slice(i + 1)];//n generatePermutations(newArr, [...perm, arr[i]]);//n }//n }//n //n generatePermutations(arr, []);//n //n // 添加子数组的结果//n for (let i = 0; i < arr.length; i++) {//n const subArr = arr.slice(0, i).concat(arr.slice(i + 1));//n if (!results.some((result) => JSON.stringify(result) === JSON.stringify(subArr))) {//n results.push(subArr);//n }//n }//n //n return results;//n}//n//n使用示例://n//njavascript//nconsole.log(permute([1, 2, 3]));//n//n//n输出结果://n//n//n[//n [ 1, 2, 3 ],//n [ 1, 3, 2 ],//n [ 2, 1, 3 ],//n [ 2, 3, 1 ],//n [ 3, 1, 2 ],//n [ 3, 2, 1 ],//n [ 1, 2 ],//n [ 1, 3 ],//n [ 2, 3 ]//n]//n/
原文地址: https://www.cveoy.top/t/topic/pEba 著作权归作者所有。请勿转载和采集!