代码:
class Solution {
public int climbStairs(int n) {
if(n==1||n==2){
return n;
}
int x=1,y=2;
int sum=0;
for(int i=3;i<=n;i++){
sum=x+y;
//下一次循环时第n-2个台阶的走法等于它上一次n-1个台阶的走法
x=y;
//下一次循环时第n-1个台阶的走法等于它上一次第n个台阶的走法
y=sum;
}
return sum;
}
};
思路:爬到第n级阶梯的方法是爬到第 n- 1和n−2级台阶的方法和。
由题可知爬到第一阶和第二阶的方法数分别是1、2,由此可以以此推出爬到第三阶、第四阶....的方法数。
采用for循环统计爬到前两阶的方法和,再依次另下一次循环时第n-2个台阶的走法等于它上一次n-1个台阶的走法,第n-1个台阶的走法等于它上一次第n个台阶的走法。