Leetcode 322. 零錢兌換(Python3)
阿新 • • 發佈:2019-01-14
給定不同面額的硬幣 coins 和一個總金額 amount。編寫一個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 -1
。
示例 1:
輸入: coins =[1, 2, 5]
, amount =11
輸出:3
解釋: 11 = 5 + 5 + 1
示例 2:
輸入: coins =[2]
, amount =3
輸出: -1
說明:
你可以認為每種硬幣的數量是無限的。
程式碼:
class Solution(object): def coinChange(self, coins, amount): dp = [amount+1]*(amount+1) dp[0] = 0 for i in range(1,amount+1): for j in coins: if i >= j: dp[i] = min(dp[i],dp[i-j] + 1) return -1 if dp[-1] > amount else dp[-1]