题解:
这是一个经典的动态规划问题,可以使用递归或迭代的方法解决。我们可以定义一个函数f(n)表示爬到第n阶楼梯的方法数。当n为1时,只有一种方法,即爬1阶;当n为2时,有两种方法,即爬1阶两次或者爬2阶一次。对于n大于2的情况,我们可以从n-1阶和n-2阶爬上来,所以f(n) = f(n-1) + f(n-2)。
class Solution:
def climbStairs(self, n: int) -> int:
if n == 1:
return 1
if n == 2:
return 2
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]