70.爬楼梯
假设你正在爬楼梯,楼梯到顶部一共有 n 级。
每次你可以选择爬 1 级或 2 级,你一共有多少种不同的的方式爬到顶部。
注意:给定的 n 是正整数。
Example 1:
Input: 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
Example 2:
Input: 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
####解法1:
根据题目意思,每次可以选择爬 1 级或爬 2 级,所以 n 级的楼梯的最后一次爬之前所处的位置只会是第 n-1 级别或第 n-2 级,继续往前推可以发现解为:
其实就是斐波那契数列的变形,可以看作斐波那契数列去掉第一项所得的新数列。
代码实现:
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
let prev = 0;
let curr = 1;
for (let i = 0; i < n; i ++) {
let tmp = curr;
curr = prev + curr;
prev = tmp;
}
return curr;
};