1. 程式人生 > >Leetcode 322. 零錢兌換(Python3)

Leetcode 322. 零錢兌換(Python3)

322. 零錢兌換

給定不同面額的硬幣 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]