首页 >web前端 >js教程 >如何在 JavaScript 中高效生成整数数组的所有排列?

如何在 JavaScript 中高效生成整数数组的所有排列?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-14 11:30:12731浏览

How Can I Efficiently Generate All Permutations of an Integer Array in JavaScript?

在 JavaScript 中识别数组排列

要计算整数数组的所有排列,在采用基于字符串的算法时需要考虑一些细微差别处理数组。

原始函数(为字符串设计)通过字符跟踪字符和usedChars 数组。它迭代每个字符,将其添加到usedChars中,并对剩余字符递归调用permute。

适应整数

为了容纳整数数组,需要进行修改:

  1. 整数跟踪: 用整数数组替换 chars 和usedChars 来跟踪元素。
  2. 拼接和连接: 使用 splice 和 concat 操作整数数组而不是字符串。
  3. 拆分和连接:删除字符串拆分和连接操作,因为它们不适用到整数。

修订后的数组函数

下面修订后的函数解决了上述调整:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn