这个问题是比较典型的动态规划问题,到达第n个台阶时的走法是第n-1个台阶和n-2个台阶步数之和。
public int climbStairs(int n) {
int[] res=new int[n+1];
res[0]=1;
res[1]=1;
for(int i=2;i<=n;i++){
res[i]=res[i-1]+res[i-2];
}
return res[n];
}
同时由于只涉及到三个变量,新建数组可以只申请3个。