Menu
CoddyTech

Coin Change

Otrzymujesz listę coins z różnymi nominałami monet oraz docelową wartość amount. Możesz używać każdego nominału dowolną liczbę razy. Zwróć najmniejszą liczbę monet, których nominały sumują się dokładnie do amount, lub -1, jeśli żadna kombinacja monet nie pozwala uzyskać tej wartości. Wartość 0 wymaga 0 monet.

Funkcja

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
różne wartości monet, z których każdej można użyć dowolną liczbę razy
amountinteger
dokładną kwotę do zapłaty
Zwracainteger
najmniejsza potrzebna liczba monet lub -1, gdy nie da się uzyskać tej kwoty

Ograniczenia

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • Wszystkie wartości monet są różne.

Przykłady

Wejście
coins = [2, 5, 10]amount = 27
Wyjście
4
Wyjaśnienie
10 + 10 + 5 + 2 daje 27 przy użyciu czterech monet. Trzy monety nie wystarczą: 27 jest nieparzyste, więc potrzebna jest dokładnie jedna 5, a pozostałe dwie dają co najwyżej 20, czyli za mało, by uzyskać 22.
challenge icon

Pytanie dodatkowe

Czy potrafisz policzyć, ile różnych kombinacji monet składa się na kwotę amount, zamiast szukać najmniejszej liczby monet?

Zresetuj kod
def coinChange(coins, amount):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

coins = [2, 5, 10]
amount = 27

Oczekiwany wynik

4