在 JavaScript 中识别数组排列
要计算整数数组的所有排列,在采用基于字符串的算法时需要考虑一些细微差别处理数组。
原始函数(为字符串设计)通过字符跟踪字符和usedChars 数组。它迭代每个字符,将其添加到usedChars中,并对剩余字符递归调用permute。
适应整数
为了容纳整数数组,需要进行修改:
修订后的数组函数
下面修订后的函数解决了上述调整:
function permute(inputArr) { const permArr = []; const usedInts = []; for (let i = 0; i < inputArr.length; i++) { const el = inputArr.splice(i, 1); usedInts.push(el); if (inputArr.length === 0) { permArr.push(usedInts.slice()); } permute(inputArr.slice()); inputArr.splice(i, 0, el); usedInts.pop(); } return permArr; }
用法示例
使用修改后的函数,我们可以计算整数数组的排列:
console.log(permute([1, 2, 3, 4])); // [[1, 2, 3, 4], [1, 2, 4, 3], ...] console.log(permute([5, 6, 7])); // [[5, 6, 7], [5, 7, 6], ...]
以上是如何在 JavaScript 中高效生成整数数组的所有排列?的详细内容。更多信息请关注PHP中文网其他相关文章!