Menu
CoddyTech

Next Permutation

Ti viene dato un array di interi nums e i valori possono ripetersi. Immagina tutte le disposizioni distinte di questi valori, ordinate in ordine lessicografico: confronta due disposizioni al primo indice in cui differiscono e quella con il valore più piccolo in quella posizione viene prima. Restituisci la disposizione che viene subito dopo nums in quest’ordine.

Se nums è già la disposizione più grande, non ce n’è una successiva: restituisci la più piccola, cioè i valori ordinati in ordine crescente. Punta a un tempo O(n) e a una memoria aggiuntiva O(1).

Funzione

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
la disposizione attuale dei valori
Restituisceinteger-array
la disposizione successiva in ordine lessicografico, oppure i valori ordinati in ordine crescente se nums è il più grande

Vincoli

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

Esempi

Input
nums = [2, 5, 4, 1]
Output
[4, 1, 2, 5]
Spiegazione
La coda 5, 4, 1 sta diminuendo, quindi il 2 che la precede deve aumentare. Il valore più piccolo della coda maggiore di 2 è 4; mettilo lì e disponi il resto in ordine crescente: [4, 1, 2, 5].
challenge icon

Per approfondire

Come troveresti invece la disposizione precedente, quella che viene subito prima di nums in ordine lessicografico?

Ripristina il codice
def nextPermutation(nums):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

nums = [2, 5, 4, 1]

Output atteso

[4, 1, 2, 5]