70.爬楼梯
我的代码
public static int climbStairs(int n) {
int pre = 1;
int last = 2;
if (n == 0) {
return 0;
}else if(n == 1) {
return 1;
}
int i = 3;
while (i <= n) {
int tmp = last;
last = pre + last;
pre = tmp;
i ++;
}
return last;
}
我的理解
每增加一层台阶,方案数是斐波那契数列,所以直接使用动态规划处理,不适用递归的方法!
大佬的代码
public int climbStairs(int n) {
if(n == 0 || n == 1){
return 1;
}
int preOneStep = 1;
int preTwoStep = 1;
int result = 0;
for(int i = 2; i <= n ;i++){
result = preTwoStep + preOneStep;
preOneStep = preTwoStep;
preTwoStep = result;
//动态规划的步骤
}
return result;
}
我对大佬代码的理解
方法还是一样的,找到发展的规律,然后使用动态规划。