Heim >Web-Frontend >js-Tutorial >Wie kann ich alle Permutationen eines Integer-Arrays in JavaScript effizient generieren?

Wie kann ich alle Permutationen eines Integer-Arrays in JavaScript effizient generieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-14 11:30:12731Durchsuche

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

Array-Permutationen in JavaScript identifizieren

Um alle Permutationen eines Arrays von Ganzzahlen zu berechnen, müssen bei der Anpassung stringbasierter Algorithmen Nuancen berücksichtigt werden um an Arrays zu arbeiten.

Die ursprüngliche Funktion (entwickelt für Strings) verfolgt Zeichen über Zeichen und verwendete Zeichen Arrays. Es durchläuft jedes Zeichen, fügt es zu usedChars hinzu und ruft rekursiv Permute für die verbleibenden Zeichen auf.

Anpassung an Ganzzahlen

Um Arrays von Ganzzahlen zu berücksichtigen, sind Änderungen erforderlich:

  1. Ganzzahlverfolgung: Ersetzen chars und usedChars mit ganzzahligen Arrays zum Verfolgen von Elementen.
  2. Spleißen und Verketten:Verwenden Sie splice und concat, um das ganzzahlige Array anstelle von Zeichenfolgen zu manipulieren.
  3. Aufteilen und Zusammenfügen: Entfernen Sie die Vorgänge zum Aufteilen und Zusammenfügen von Zeichenfolgen, da diese nicht anwendbar sind ganze Zahlen.

Überarbeitete Funktion für Arrays

Die überarbeitete Funktion unten befasst sich mit den oben genannten Anpassungen:

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;
}

Verwendungsbeispiele

Mit der überarbeiteten Funktion können wir Permutationen für Arrays von berechnen ganze Zahlen:

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], ...]

Das obige ist der detaillierte Inhalt vonWie kann ich alle Permutationen eines Integer-Arrays in JavaScript effizient generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn