Menu
CoddyTech

Permutations

MedioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Ricevi una lista nums di interi tutti diversi. Restituisci ogni ordinamento di quei valori, ciascuno come una lista che usa ogni valore esattamente una volta, così che n valori producano n! ordinamenti. Elencali in ordine lessicografico: confronta due ordinamenti posizione per posizione e lascia che sia la prima differenza a decidere. Per [1, 2, 3], questo mette [1, 2, 3] per primo e [3, 2, 1] per ultimo.

Funzione

permute(nums: integer-array) → integer-2d-array
numsinteger-array
i valori, tutti diversi, in qualsiasi ordine
Restituisceinteger-2d-array
ogni ordinamento dei valori, elencato in ordine lessicografico

Vincoli

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • Tutti i valori in nums sono diversi.
  • nums può essere in qualsiasi ordine.

Esempi

Input
nums = [3, 1, 2]
Output
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
Spiegazione
Tre valori hanno 3! = 6 ordinamenti. Ordinati, i valori sono 1, 2, 3, quindi vengono prima gli ordinamenti che iniziano con 1 e [1, 2, 3] viene prima di [1, 3, 2] perché 2 è minore di 3 nella seconda posizione. L'ordine dell'input non è importante.

lock icon+13 test nascosti all’invio

challenge icon

Per approfondire

Data una permutazione, riesci a produrre la successiva in ordine lessicografico direttamente, in O(n) e usando O(1) spazio aggiuntivo?

Ripristina il codice
def permute(nums):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

nums = [3, 1, 2]

Atteso

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