Menu
CoddyTech

Combination Sum

MittelBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Du erhältst eine Liste candidates verschiedener positiver Ganzzahlen und eine positive Ganzzahl target. Finde alle Kombinationen von Kandidaten, deren Werte sich genau zu target addieren, wobei jeder Kandidat beliebig oft verwendet werden darf. Zwei Kombinationen sind gleich, wenn sie dieselben Werte gleich oft enthalten; [2, 3, 3] und [3, 2, 3] zählen also als eine Kombination.

Gib jede Kombination mit ihren Werten in aufsteigender Reihenfolge und die Kombinationen in lexikografischer Reihenfolge zurück: Vergleiche zwei Kombinationen von links nach rechts Wert für Wert; die Kombination mit dem kleineren Wert an der ersten unterschiedlichen Stelle kommt zuerst.

Funktion

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
die verschiedenen Werte, die du in beliebiger Reihenfolge und beliebig oft verwenden kannst
targetinteger
die Gesamtsumme, die jede Kombination genau erreichen muss
Gibt zurückinteger-2d-array
jede Kombination, die die Zielsumme ergibt, jeweils aufsteigend sortiert und in lexikografischer Reihenfolge aufgeführt

Einschränkungen

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Alle Werte in candidates sind unterschiedlich und in keiner bestimmten Reihenfolge.
  • Mindestens eine Kombination erreicht target, und höchstens 150 tun das.

Beispiele

Eingabe
candidates = [6, 2, 3]target = 8
Ausgabe
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Erklärung
Vier 2en ergeben 8, ebenso wie 2 + 3 + 3 und 2 + 6. Alle drei beginnen mit 2, also bestimmt der zweite Wert die Reihenfolge: 2, dann 3, dann 6. Ohne eine 2 bleiben nur 3en und 6en, und jede Kombination davon ist ein Vielfaches von 3, was 8 nicht ist.

lock icon+12 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Jeder Kandidat darf nun höchstens einmal verwendet werden, und candidates kann wiederholte Werte enthalten. Wie änderst du die Suche, damit keine Kombination zweimal vorkommt?

Code zurücksetzen
def combinationSum(candidates, target):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

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