ホームページ >ウェブフロントエンド >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 での配列の順列の識別

整数の配列のすべての順列を計算するには、文字列ベースのアルゴリズムを適応させるときに考慮すべきニュアンスがあります

元の関数 (文字列用に設計された) は追跡します。 chars および 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。