You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
解题思路:爬楼梯问题,类似青蛙跳台阶问题,铺砖问题。最简单的思路:实用递归。 但是递归重复计算量大,时间复杂度高。
于是使用循环,记录前面已经计算的n-2,n-1来计算当前n值。
public class Solution {
public int climbStairs(int n) {
int result=0;
int ppre=0;
int pre=0;
if(n==1){
return 1;
}
if(n==2){
return 2;
}
for(int i=3;i<=n;i++){
if(i==3){
ppre=climbStairs(i-2);
pre=climbStairs(i-1);
}else{
ppre=pre;
pre=result;
}
result=ppre+pre;
}
return result;
}
}