70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
1 | 输入: 2 |
示例 2:
1 | 输入: 3 |
- 有一个台阶只有一种选择;
- 有两个台阶有 2 阶、1阶 + 1阶两种选择;
- 有三个台阶有也有两种选择:从第二个台阶爬一阶,从第一个台阶一次爬两阶。爬上第二个台阶有两种方法,故通过第二个台阶到第三个台阶有两种方法,加上从第一个台阶到第三个台阶有一种方法故有三种方法。
设 f(n) 为爬上第 n 个台阶的方法总数,则有 f(n) = f(n-1) + f(n-2);第 n 个台阶的方法数由第 n-1 个台阶和第 n-2 个台阶的方法数组成,即可以从 n-1 个台阶爬一个台阶到第 n 阶和从第 n-2 个台阶爬两个台阶到第 n 个台阶。
1 | class Solution { |
时间复杂度O(n),空间复杂度O(1)。