Menu
CoddyTech

Combination Sum

MedioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Ti viene fornito un elenco candidates di diversi interi positivi e un intero positivo target. Trova tutte le combinazioni di candidati la cui somma è esattamente target, utilizzando ciascun candidato tutte le volte che vuoi. [2, 3, 3] e [3, 2, 3] sono la stessa combinazione.

Restituisci ogni combinazione in ordine crescente e le combinazioni in ordine lessicografico: alla prima posizione in cui due combinazioni differiscono, viene prima quella con il valore più piccolo.

Funzione

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
i diversi valori che puoi usare, in qualsiasi ordine e tutte le volte che vuoi
targetinteger
il totale che ogni combinazione deve raggiungere esattamente
Restituisceinteger-2d-array
ogni combinazione che dà come somma il valore target, ciascuna in ordine crescente, elencata in ordine lessicografico

Vincoli

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Tutti i valori in candidates sono diversi, in nessun ordine particolare.
  • Almeno una combinazione raggiunge target, e al massimo 150 lo fanno.

Esempi

Input
candidates = [6, 2, 3]target = 8
Output
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Spiegazione
Quattro 2, 2 + 3 + 3 e 2 + 6 fanno tutti 8, ordinati in base al loro secondo valore. Senza un 2 restano solo 3 e 6, e le loro somme sono multipli di 3, cosa che 8 non è.
challenge icon

Per approfondire

Ogni candidato può ora essere usato al massimo una volta e candidates può contenere valori ripetuti. Come modifichi la ricerca affinché nessuna combinazione compaia due volte?

Ripristina il codice
def combinationSum(candidates, target):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

candidates = [6, 2, 3]
target = 8

Output atteso

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]