Menu
CoddyTech

Subsets

Ricevi una lista nums di numeri interi distinti. Restituisci tutti i suoi sottoinsiemi, incluso quello vuoto e la lista completa, quindi n valori danno 2^n sottoinsiemi. Scrivi ogni sottoinsieme con i suoi valori in ordine crescente e disponi i sottoinsiemi in ordine lessicografico: confronta i sottoinsiemi valore per valore; decide la prima differenza e, se un sottoinsieme è l'inizio di un altro, viene prima. Per [1, 2] la risposta è [[], [1], [1, 2], [2]].

Funzione

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
i valori, tutti diversi, in qualsiasi ordine
Restituisceinteger-2d-array
ogni sottoinsieme, ciascuno ordinato in ordine crescente, elencato in ordine lessicografico

Vincoli

  • 1 ≤ nums.length ≤ 10
  • -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], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Spiegazione
In ordine, i valori sono 1, 2, 3, e tre valori danno 2^3 = 8 sottoinsiemi. [1, 2] viene prima di [1, 2, 3] perché ne è l’inizio, e [1, 2, 3] viene prima di [1, 3] perché 2 è minore di 3 nella seconda posizione.

lock icon+13 test nascosti all’invio

challenge icon

Per approfondire

Riesci a produrre lo stesso elenco senza ricorsione, costruendo ogni sottoinsieme direttamente da quello precedente?

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

Caso 1

Caso 2

Caso 3

Input

nums = [3, 1, 2]

Atteso

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