Menu
CoddyTech

Next Permutation

Du erhältst ein Array aus Ganzzahlen nums, und Werte können mehrfach vorkommen. Stell dir alle unterschiedlichen Anordnungen dieser Werte in lexikografischer Reihenfolge vor: Vergleiche zwei Anordnungen an der ersten Stelle, an der sie sich unterscheiden; diejenige mit dem kleineren Wert an dieser Stelle kommt zuerst. Gib die Anordnung zurück, die in dieser Reihenfolge direkt nach nums kommt.

Wenn nums bereits die größte Anordnung ist, gibt es keine danach: Gib die kleinste zurück, bei der die Werte aufsteigend sortiert sind. Strebe eine Laufzeit von O(n) und einen zusätzlichen Speicherbedarf von O(1) an.

Funktion

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
die aktuelle Anordnung der Werte
Gibt zurückinteger-array
die nächste Anordnung in lexikografischer Reihenfolge oder die Werte in aufsteigender Reihenfolge sortiert, wenn nums die größte Anordnung ist

Einschränkungen

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 1000

Beispiele

Eingabe
nums = [2, 5, 4, 1]
Ausgabe
[4, 1, 2, 5]
Erklärung
Der Schwanz 5, 4, 1 fällt, also muss die 2 davor wachsen. Der kleinste Schwanzwert, der größer als 2 ist, ist 4; setze sie an diese Stelle und ordne den Rest aufsteigend: [4, 1, 2, 5].
challenge icon

Weiterführende Frage

Wie würdest du stattdessen die vorherige Anordnung finden, also diejenige, die in der Wörterbuchreihenfolge direkt vor nums kommt?

Code zurücksetzen
def nextPermutation(nums):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

nums = [2, 5, 4, 1]

Erwartete Ausgabe

[4, 1, 2, 5]