差点没想起来这是斐波拉契数列的一个实例。转移到dp[i]的前一个步骤只有两种姿势,走一阶或两阶。
class Solution:
def climbStairs(self, n: int) -> int:
# 动态规划
if n == 1: return 1
dp = [0] * n
dp[0], dp[1] = 1,2
for i in range(2, n):
dp[i] = dp[i-1] + dp[i-2]
return dp[n-1]