最近一段时间一直在练习动态规划的算法,把经典的爬楼梯问题列出来,一块学习一下。
方法一:
class Solution:
def climbStairs(self, n: int) -> int:
# 1 2 3 5 8 13 21......
num1 = 1
num2 = 2
if n==1:
return num1
elif n==2:
return num2
else:
for i in range(3,n+1):
ans = num1 + num2
num1 = num2
num2 = ans
return ans
方法二:
class Solution:
def climbStairs(self, n: int) -> int:
if n <= 2:
return n
dp = [0] * n
dp[0] = 1
dp[1] = 2
for i in range(2,n):
dp[i] = dp[i-1] + dp[i-2]
return dp[-1]



