參考官方第三種解法,自下而上
labuladong的動態規劃做題思路
寫出狀態轉移方程
這個題目應該是正序的,當我們計算到f[x]時,f[x-1],f[x-2],f[x-5]都已經得到結果了
class
solution
(object):
defcoinchange
(self, coins, amount)
:"""
:type coins: list[int]
:type amount: int
:rtype: int
"""# 1.確定base case
dp =
[amount+1]
*(amount+1)
dp[0]
=0# 2.從面值為1開始,計算其最優dp值
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+
1else
-1
零錢兌換問題
給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2 輸入 coins 2 amount...
動態規劃 零錢兌換
問題描述 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。你可以認為每種硬幣的數量是無限的。比如coins 1,2,5 amount 11,11 5 5 1,最終結果為3 演算法思路 本...
零錢兌換(動態規劃)
leetcode 322 零錢兌換 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2...