Link: https://leetcode.com/problems/coin-change/
Solution:
Topics: DP
Intuition
Another very easy DP problem. Nothing to say about this one. Took me 30 seconds.
Implementation
def coin_change(coins, amount):
@cache
def dp(total):
if total == 0:
return 0
if total < 0:
return float('inf')
min_coins = float('inf')
for coin in coins:
min_coins = min(min_coins, 1 + dp(total-coin))
return min_coins
res = dp(amount)
return res if res != float('inf') else -1
#time: o(amount*len(coins))
#memory: o(amount)