70. 爬楼梯
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
提示:
1 <= n <= 45
解题思路
动态规划
-
初始化
-
一个阶梯的方法数
base
=1 -
0个阶梯的方法数
base2
=0; -
保存当前f(x)的方法数
curr
=0
-
-
执行循环f(x)=f(x-1)+f(x-2)
-
保存F(x)
curr
=base
+base2
-
保存F(x-2)
base2
=base
-
保存F(x-1)
base
=curr
-
楼梯数减少1
n--
-
代码实现
var climbStairs = function(n) {
let x1=1,x2=0,curr=0;
while(n){
curr=x1+x2;
x2=x1;
x1=curr;
n--;
}
return curr;
};