Menu
CoddyTech

Next Permutation

Otrzymujesz tablicę liczb całkowitych nums, a wartości mogą się powtarzać. Wyobraź sobie wszystkie różne układy tych wartości, uporządkowane alfabetycznie: porównaj dwa układy przy pierwszym indeksie, na którym się różnią, a układ z mniejszą wartością w tym miejscu występuje wcześniej. Zwróć układ, który w tej kolejności występuje bezpośrednio po nums.

Jeśli nums jest już największym układem, nie ma następnego: zwróć najmniejszy, czyli wartości posortowane rosnąco. Dąż do złożoności czasowej O(n) i O(1) dodatkowej pamięci.

Funkcja

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
obecny układ wartości
Zwracainteger-array
następne ułożenie w porządku słownikowym lub wartości posortowane rosnąco, jeśli nums jest największe

Ograniczenia

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

Przykłady

Wejście
nums = [2, 5, 4, 1]
Wyjście
[4, 1, 2, 5]
Wyjaśnienie
Ogon 5, 4, 1 opada, więc 2 przed nim musi urosnąć. Najmniejsza wartość ogona większa od 2 to 4; umieść ją tam, a resztę w kolejności rosnącej: [4, 1, 2, 5].
challenge icon

Pytanie dodatkowe

Jak znaleźć poprzednie uporządkowanie, czyli to, które w kolejności słownikowej znajduje się bezpośrednio przed nums?

Zresetuj kod
def nextPermutation(nums):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argument

nums = [2, 5, 4, 1]

Oczekiwany wynik

[4, 1, 2, 5]