Menu
CoddyTech

Coin Change

Ti viene fornita una lista coins di diversi valori di monete e un amount obiettivo. Puoi usare ogni valore di moneta tutte le volte che vuoi. Restituisci il numero minimo di monete i cui valori sommati danno esattamente amount, oppure -1 se nessuna combinazione di monete permette di raggiungerlo. Un importo pari a 0 richiede 0 monete.

Funzione

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
i diversi valori delle monete, ciascuno utilizzabile un numero qualsiasi di volte
amountinteger
il totale esatto da pagare
Restituisceinteger
il minor numero di monete necessario, oppure -1 quando non è possibile ottenere l’importo

Vincoli

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • Tutti i valori delle monete sono diversi.

Esempi

Input
coins = [2, 5, 10]amount = 27
Output
4
Spiegazione
10 + 10 + 5 + 2 fanno 27 con quattro monete. Con tre monete non ci riesci: 27 è dispari, quindi te ne serve esattamente una da 5, e le altre due sommano al massimo 20, meno di 22.
challenge icon

Per approfondire

Riesci a contare quante combinazioni diverse di monete danno come somma amount, invece di trovare il minor numero di monete?

Ripristina il codice
def coinChange(coins, amount):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

4