Java
public int climbStairs(int n) {
if(n<3)
return n;
int[] res=new int[n+1];
res[1]=1;
res[2]=2;
for(int i=3;i<=n;i++){
res[i]=res[i-1]+res[i-2];
}
return res[n];
}
简化(目标就是最后的res[n],所以只需要保留前两个数就可以了)
public int climbStairs(int n) {
if(n<3)
return n;
int[] res=new int[3];
res[0]=1;
res[1]=2;
for(int i=2;i<n;i++){
res[i%3]=res[(i-1)%3]+res[(i-2)%3];
}
return res[(n-1)%3];
}