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

最小花费爬楼梯

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];
    }
};

全部评论

相关推荐

程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务