動態(tài)規(guī)劃-零錢兌換

322. 零錢兌換

image.png
class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        if len(coins) == 0 or amount == 0: return 0
        if amount < 0: return -1
        # 初始化為amount+1是因為,
        # 金額為amount最多由amount個1元硬幣湊成,
        # amount +1 相當(dāng)于一個正無窮,也可初始化為float('inf') 一個意思
        dp = [amount + 1] * (amount + 1) 
        dp[0] = 0
        for i in range(amount+1):
            for coin in coins:
                if i - coin < 0: 
                    continue
                dp[i] = min(dp[i], 1 + dp[i-coin])
        return dp[amount] if dp[amount] != (amount + 1) else -1

518. 零錢兌換 II

image.png
class Solution:
    def change(self, amount: int, coins: List[int]) -> int:
        if amount <= 0 : return 1
        if len(coins) == 0: return 0
        dp = [0] * (amount + 1)
        dp[0] = 1
        for coin in coins:
            for i in range(coin, amount + 1):
                dp[i] = dp[i] + dp[i-coin]
        return dp[amount]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容