leetcode 70. 爬楼梯 续

 

 

思路

题目可以划分为多个重叠子问题,爬到N阶梯的方法数量,等于两个部分之和:
1.爬上N-1阶梯的方法数量,因为再爬一阶就能达到第N阶
2.爬上N-2阶梯的方法数量,因为再爬二阶梯就能达到第N阶

因此得公式:
dp[n] = dp[n-1]+dp[n-2]
同时需要初始化dp[0] = 1和dp[1] = 1
时间复杂为O(n)

class Solution {
public:
    int climbStairs(int n) {
        vector<int >res(n+5,0);//定义容器保存结果
        res[0] = 1;
        res[1] = 1;
        res[2] = 2;
        res[3] = 3;//定义初始值
        for (int i = 4;i<=n;i++)//从第四个开始
        {
            res[i] =  res[i-1]+res[i-2]; //4以后的进行动态规划迭代
        }
        return res[n];//返回最后的结果
    }
};

 

posted @ 2021-09-26 16:35  A-inspire  Views(22)  Comments(0Edit  收藏  举报