經典的動態規劃問題,記住狀態轉移方程,dp[i] = min{dp[i],dp[i-coin]+1},dp[i-coin]+1是加上當前的一枚硬幣。
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
dp = (amount+1)*[amount+1]
dp[0] = 0
for coin in coins:
for i in range(coin,amount+1):
dp[i] = min(dp[i],dp[i-coin]+1)
return dp[amount] if dp[amount]!=amount+1 else -1