70爬楼梯
class Solution:
def climbStairs(self, n: int) -> int:
if n == 1:
return n
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
for i in range(3, len(dp)):
dp[i] = dp[i - 2] + dp[i - 1]
return dp[n]
322零钱兑换
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
dp = [float('inf')] * (amount + 1)
dp[0] = 0
for i in range(len(coins)):
for j in range(coins[i], amount + 1):
dp[j] = min(dp[j], dp[j - coins[i]] + 1)
if dp[amount] == float('inf'):
return -1
else:
return dp[amount]
279完全平方数
class Solution:
def numSquares(self, n: int) -> int:
dp = [float('inf')] * (n + 1)
dp[0] = 0
for j in range(n + 1):
for i in range(1, int(j ** 0.5) + 1):
dp[j] = min(dp[j], dp[j - i * i] + 1)
return dp[n]