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 liczb z listy, których suma wynosi dokładnie target. Każdej liczby możesz użyć dowolną liczbę razy. [2, 3, 3] i [3, 2, 3] to ta sama kombinacja.

Zwróć każdą kombinację w kolejności rosnącej, a kombinacje w porządku leksykograficznym: w pierwszej pozycji, na której dwie kombinacje się różnią, najpierw umieść tę z mniejszą wartością.

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
każda suma 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ądkowane 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 w żaden szczególny sposób.
  • Co najmniej jedna kombinacja osiąga target, a najwyżej 150 kombinacji.

Przykłady

Wejście
candidates = [6, 2, 3]target = 8
Wyjście
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Wyjaśnienie
Cztery 2, 2 + 3 + 3 i 2 + 6 dają 8, uporządkowane według drugiej wartości. Bez 2 pozostają tylko 3 i 6, a ich sumy są wielokrotnościami 3, czym 8 nie jest.
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 pojawiała się dwa razy?

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

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

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