Menu
CoddyTech

Combination Sum

MedioBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Hai un elenco candidates di diversi interi positivi e un intero positivo target. Trova tutte le combinazioni di candidati i cui valori sommano esattamente a target, dove ogni candidato può essere usato tutte le volte che vuoi. Due combinazioni sono uguali quando contengono gli stessi valori lo stesso numero di volte, quindi [2, 3, 3] e [3, 2, 3] contano come una sola.

Restituisci ogni combinazione con i valori in ordine crescente e le combinazioni in ordine lessicografico: confronta due combinazioni valore per valore da sinistra, e quella con il valore più piccolo alla prima differenza viene prima.

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 di ogni combinazione deve arrivare esattamente
Restituisceinteger-2d-array
ogni combinazione la cui somma è uguale al valore obiettivo, in ordine crescente e ordinate lessicograficamente

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 fanno 8, così come 2 + 3 + 3 e 2 + 6. Tutte e tre le combinazioni iniziano con 2, quindi è il secondo valore a stabilire l’ordine: 2, poi 3, poi 6. Senza un 2 hai solo 3 e 6, e ogni combinazione di questi è un multiplo di 3, cosa che 8 non è.

lock icon+12 test nascosti all’invio

challenge icon

Per approfondire

Ora ogni candidato può 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
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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