Menu
CoddyTech

Coin Change

Recibes una lista coins de valores de monedas diferentes y una cantidad objetivo amount. Puedes usar cada valor de moneda tantas veces como quieras. Devuelve el menor número de monedas cuyos valores sumen exactamente amount, o -1 si ninguna combinación de monedas permite alcanzarla. Una cantidad de 0 requiere 0 monedas.

Función

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
los distintos valores de las monedas, cada uno utilizable cualquier número de veces
amountinteger
el total exacto que hay que pagar
Devuelveinteger
la menor cantidad de monedas necesaria, o -1 cuando no se pueda obtener el importe

Restricciones

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • Todos los valores de las monedas son diferentes.

Ejemplos

Entrada
coins = [2, 5, 10]amount = 27
Salida
4
Explicación
10 + 10 + 5 + 2 suman 27 con cuatro monedas. Con tres monedas no se puede: 27 es impar, así que necesitan exactamente una de 5, y las otras dos suman como máximo 20, menos de 22.
challenge icon

Para ir más allá

¿Puedes contar cuántas combinaciones diferentes de monedas suman amount, en lugar de encontrar la menor cantidad de monedas?

Restablecer código
def coinChange(coins, amount):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

4