题目

image.png

思路

设爬n个台阶,有f(n)种方法。对于当前位置,有两种选择,要么爬1个台阶,要么爬2个台阶。
则 f(n) = f(n - 1) + f(n - 2)。
特殊情况,也就是终止条件,f(1) = 1, f(2) = 2。为了使f(2)满足上式,f(0) = 1(数值上成立,没有意义)

代码

  1. class Solution:
  2. def climbStairs(self, n: int) -> int:
  3. if n <= 2:
  4. return n
  5. dp = [0] * (n + 1)
  6. dp[0] = 1
  7. dp[1] = 1
  8. dp[2] = 2
  9. for i in range(2, n+1):
  10. dp[i] = dp[i - 1] + dp[i - 2]
  11. return dp[n]