Menu
CoddyTech

Permutations

MittelBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Du erhältst eine Liste nums mit verschiedenen Ganzzahlen. Gib jede Anordnung dieser Werte zurück, jeweils als Liste, in der jeder Wert genau einmal vorkommt, sodass n Werte n! Anordnungen ergeben. Liste sie in lexikografischer Reihenfolge auf: Vergleiche zwei Anordnungen Position für Position; die erste Abweichung entscheidet. Für [1, 2, 3] bedeutet das, dass [1, 2, 3] an erster und [3, 2, 1] an letzter Stelle steht.

Funktion

permute(nums: integer-array) → integer-2d-array
numsinteger-array
die Werte, alle unterschiedlich, in beliebiger Reihenfolge
Gibt zurückinteger-2d-array
jede Anordnung der Werte, aufgelistet in lexikografischer Reihenfolge

Einschränkungen

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • Alle Werte in nums sind verschieden.
  • nums kann in beliebiger Reihenfolge vorliegen.

Beispiele

Eingabe
nums = [3, 1, 2]
Ausgabe
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Erklärung
Drei Werte haben 3! = 6 Anordnungen. Sortiert lauten die Werte 1, 2, 3, daher kommen die Anordnungen, die mit 1 beginnen, zuerst, und [1, 2, 3] kommt vor [1, 3, 2], weil 2 an der zweiten Position kleiner als 3 ist. Die Reihenfolge der Eingabe spielt keine Rolle.

lock icon+13 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du ausgehend von einer Anordnung die nächste in lexikografischer Reihenfolge direkt erzeugen, in O(n) Zeit und mit O(1) zusätzlichem Speicherplatz?

Code zurücksetzen
def permute(nums):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

nums = [3, 1, 2]

Erwartet

[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]