322. Coin Change
solution
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
dp = [float('inf')] * (amount + 1)
dp[0] = 0
for i in range(1, amount+1):
for coin in coins:
if i - coin >= 0:
dp[i] = min(dp[i], dp[i-coin]+1)
return dp[-1] if dp[-1] != float('inf') else -1class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
dp = [float('inf') for _ in range(amount + 1)] # 恰好装满类的背包问题初始化
dp[0] = 0
for i in coins: # 先物品
for j in range(i, amount+1): # 再背包(或者不能说背包,而是背包的约束), 背包大于物品
if dp[j-i] != float('inf'):
dp[j] = min(dp[j], dp[j-i] + 1)
if dp[amount] == float('inf'):
return -1
return dp[amount]follow up
Last updated