题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
代码:
class Solution {
public:
int climbStairs(int n) {
if(n == 0)
{
return 0;
}
if(n == 1)
{
return 1;
}
if(n == 2)
{
return 2;
}
int temp1 = 1;
int temp2 = 2;
int result = 0;
for(int i = 3; i <= n; i++){
result = temp1 + temp2;
temp1 = temp2;
temp2 = result;
}
return result;
}
};
笔记:思路:可以这样想,n个台阶,一开始可以爬 1 步,也可以爬 2 步,那么n个台阶爬楼的爬楼方法就等于 一开始爬1步的方法数 + 一开始爬2步的方法数,这样我们就只需要计算n-1个台阶的方法数和n-2个台阶方法数,同理,计算n-1个台阶的方法数只需要计算一下n-2个台阶和n-3个台阶,计算n-2个台阶需要计算一下n-3个台阶和n-4个台阶……参考自:https://www.cnblogs.com/patatoforsyj/p/9463650.html