Menu
CoddyTech

Combination Sum

ŚrednieNawrotypython iconjava iconcpp iconc iconjs icon+10

Otrzymujesz listę candidates zawierającą różne dodatnie liczby całkowite oraz dodatnią liczbę całkowitą target. Znajdź wszystkie kombinacje elementów listy candidates, których wartości sumują się dokładnie do target, przy czym każdy element można wykorzystać dowolną liczbę razy. Dwie kombinacje są takie same, jeśli zawierają te same wartości tyle samo razy, więc [2, 3, 3] i [3, 2, 3] liczą się jako jedna kombinacja.

Zwróć każdą kombinację z wartościami w kolejności rosnącej, a kombinacje w porządku leksykograficznym: porównaj wartości dwóch kombinacji kolejno od lewej, a ta, która przy pierwszej różnicy ma mniejszą wartość, powinna znaleźć się wcześniej.

Funkcja

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
różne wartości, których możesz używać, w dowolnej kolejności i dowolną liczbę razy
targetinteger
suma każdej kombinacji musi wynosić dokładnie
Zwracainteger-2d-array
każda kombinacja, której suma jest równa wartości docelowej, każda w kolejności rosnącej, uporządkowana leksykograficznie

Ograniczenia

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Wszystkie wartości w candidates są różne i nie są uporządkowane.
  • Co najmniej jedna kombinacja osiąga target, a najwyżej 150 kombinacji to robi.

Przykłady

Wejście
candidates = [6, 2, 3]target = 8
Wyjście
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Wyjaśnienie
Cztery dwójki dają 8, podobnie jak 2 + 3 + 3 oraz 2 + 6. Wszystkie trzy zaczynają się od 2, więc o kolejności decyduje druga wartość: 2, potem 3, a następnie 6. Bez 2 zostają tylko 3 i 6, a każda ich kombinacja jest wielokrotnością 3, a 8 nią nie jest.

lock icon+12 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Każdy kandydat może być teraz użyty najwyżej raz, a candidates może zawierać powtarzające się wartości. Jak zmienić wyszukiwanie, aby żadna kombinacja nie pojawiła się dwa razy?

Zresetuj kod
def combinationSum(candidates, target):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

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