
让我们掌声恭迎动态规划的始祖------
最基础的动态规划,原始方法是维护一个数组,每次记录到该阶梯的方案数量,每次的数量是到上一个阶梯的方案数量加上到上上一阶梯的方案数量,因为只有两种走法。
进阶可以优化空间复杂度,只记录两个数字,因为更之前的数据都用不上了。
我当然是直接写优化方案------
cpp
class Solution {
public:
int climbStairs(int n) {
if(n==1) return 1;
if(n==2) return 2;
int one=1;
int two=2;
for(int i=3;i<=n;i++){
if(i%2==0) two=one+two;
else one=one+two;
}
return max(one,two);
}
};