class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
# dp索引是当前总金额,值是最小个数
# 递推前几个就找到公式了
dp = [float('inf') for _ in range(amount+1)]
# 注意重新初始化dp[0],更新dp[1/2/3...]
dp[0] = 0
for m in range(1, amount+1):
for coin in coins:
if coin <= m:
dp[m] = min(dp[m], dp[m-coin] + 1)
return dp[-1] if dp[-1] <= amount else -1
零钱兑换及01背包完全背包
最新推荐文章于 2022-10-20 20:59:13 发布