题目地址:爬楼梯
之前有印象,大概是这样:
class Solution {
public static int climbStairs(int n) {
if (n==1)
return 1;
else if (n==2)
return 2;
else
return climbStairs(n-2)+climbStairs(n-1);
}
}
结果:
如何优化?如果将结果用数组存储,其实这类似一个斐波那契数列:
class Solution {
public static int climbStairs(int n) {
if (n==1)
return 1;
if(n==2)
return 2;
int[] chs = new int[n+1];
chs[1]=1;
chs[2]=2;
for (int i = 3; i <= n; i++) {
chs[i]=chs[i-1]+chs[i-2];
}
return chs[n];
}
}
结果: