-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
- 1 阶 + 1 阶
- 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
- 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 2 阶 + 1 阶
解法
1 2 3 4 5 6 7
1 2 3 5 8 13 21
3的值 (3=1+2) 1 的值+2的值
4的值( 5=2+3) 2的值加3的值
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
// console.log(n);
if(n==1||n==2){
return n;
}
// if(n>2){
// n--;
// return climbStairs(n)+climbStairs(n-1);
// }
// 递归超时了,可能效率不行,测试通过不了 只能循环了。
let b1=1,b2=2,sum=0;
for(let i=2;i<n;i++){
sum=b1+b2;
b1=b2;
b2=sum;
}
return sum;
};
Metadata
Metadata
Assignees
Labels
No labels