题解 | #最小花费爬楼梯#

最小花费爬楼梯

https://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7

#include <algorithm>
#include <vector>
class Solution {
public:
//dp[i]:到达第i层台阶所需的最小cost总和。而cost[i]指的是从第i层楼梯起步所需要的cost,支付cost后能爬1~2步。
//递推公式:dp[i]=min(dp[i-1]+cost[i-1]  , dp[i-2]+cost[i-2])
//初始化:dp[0]=0,dp[1]=0。
//遍历顺序:从前往后
//细节:到达台阶顶部是要比cost数组的size多1的。比如[2,5,20],20并不是台阶顶部,而是到达顶部前的最后一级。
    int minCostClimbingStairs(vector<int>& cost) {
        int costsize=cost.size();
        vector<int>dp(costsize+1,0);//初始化dp,将cost.size()+1数量的元素全部初始化为0
        if(costsize==1)return cost[0];//极端情况
        for(int i=2;i<=costsize;i++)//注意是<=cost.size(),因为我们上面说了台阶顶部是比cost数组的大小还要多1的。
        {
            dp[i]=min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);
        }
        return dp[dp.size()-1];
    }
};

全部评论

相关推荐

某牛奶:一觉醒来全球程序员能力下降200%,小伙成功scanf惊呆在座个人。
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务