爬楼梯
概述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
输入:n = 2
输出:2
输入:n = 3
输出:3
方法一:动态规划
思路:我们是从第 0 级开始爬的,所以从第 0 级爬到第 0 级我们可以看作只有一种方案,即 f(0) = 1;从第 0 级到第 1 级也只有一种方案,即爬一级,f(1) = 1。这两个作为边界条件就可以继续向后推导出第 n 级的正确结果。
# 动态规划
class Solution:
def climbStairs(self, n: int) -> int:
x0, x1, x2 = 0, 0, 1
for i in range(n):
x0 = x1
x1 = x2
x2 = x0 + x1
return x2