题目描述:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数
这里使用的是动态规划解决问题,可以观察发现后一步的次数与前面的次数息息相关。
这里举个栗子: 当n=4时,只有通过n=3然后加1,或者n=2加2才能到达。
而n=3时,只有只有通过n=2然后加1,或者n=1加2才能到达。
这样我们就可以进行一次循环了,得到结果了。
代码如下:
class Solution {
public int climbStairs(int n) {
int[] dp = new int[n+1];
// if(n==1){
// dp[1]=1;
// return dp[1];
// }
if(n<=2){
return n;
}
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for(int i=3;i<=n;i++){
dp[i] = dp[i-1]+dp[i-2];
}
return dp[n];
}
}