Menu
CoddyTech

Coin Change

Тебе дан список coins с различными номиналами монет и целевое значение amount. Ты можешь использовать монету каждого номинала сколько угодно раз. Верни наименьшее количество монет, сумма номиналов которых в точности равна amount, или -1, если набрать эту сумму монетами невозможно. Для суммы 0 требуется 0 монет.

Функция

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
разные номиналы монет, каждый из которых можно использовать любое количество раз
amountinteger
точная сумма к оплате
Возвращаетinteger
минимальное необходимое количество монет или -1, если эту сумму нельзя составить

Ограничения

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • Значения всех монет различаются.

Примеры

Ввод
coins = [2, 5, 10]amount = 27
Вывод
4
Пояснение
10 + 10 + 5 + 2 дают 27 четырьмя монетами. Три монеты не подойдут: 27 — нечётное число, поэтому нужна ровно одна монета номиналом 5, а две другие в сумме дают не больше 20, что меньше 22.
challenge icon

Дополнительный вопрос

Можешь посчитать, сколько существует различных комбинаций монет, в сумме дающих amount, вместо того чтобы искать наименьшее количество монет?

Сбросить код
def coinChange(coins, amount):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

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

Ожидаемый вывод

4