322. 零錢兌換
問題:
給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1。
示例 1:
輸入: coins = [1, 2, 5], amount = 11
輸出: 3
解釋: 11 = 5 + 5 + 1
示例 2:
輸入: coins = [2], amount = 3
輸出: -1
解決:
思想:
python 代碼:
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
dp=[-1]*(amount+1)
dp[0]=0
for i in range(1,amount+1):
for j in range(len(coins)):
if(i-coins[j]>=0 and dp[i-coins[j]]!=-1):
if(dp[i]==-1 or dp[i]>dp[i-coins[j]]+1):
dp[i]=dp[i-coins[j]]+1
return dp[amount]