题目描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
- 1 阶 + 1 阶
- 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
- 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 2 阶 + 1 阶
题目解答:
方法1:动态规划
到达位置i
,可以从位置i - 1
走1个台阶或者i - 2
走两个台阶到达当前位置。
运行时间0ms,代码如下。
int climbStairs(int n) {
if(n == 0 || n== 1 || n == 2)
return n;
int t1 = 1, t2 = 2, i = 0, t = 0;
for(i = 2; i < n; i++) {
t = t1 + t2;
t1 = t2;
t2 = t;
}
return t;
}