【力扣】刷题备忘录-动归-746. 使用最小花费爬楼梯

746. 使用最小花费爬楼梯 - 力扣(LeetCode)

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        vector<int> dp(cost.size());
        dp[0] = cost[0];
        dp[1] = cost[1];
        for(int i=2;i < cost.size(); i++){ // 条件这里1.忘记写从2开始 语法也不太熟悉 
                                           // 2. 条件多写了等于号
            dp[i] = min(dp[i-1], dp[i-2]) + cost[i];
            std::cout << "i的当前值是:" << i << std::endl;
            std::cout << "dp i的当前值是:" << dp[i] << std::endl;
        }
        
        return min(dp[cost.size() - 1], dp[cost.size() - 2]);// 最后这里输出条件写的不对 写成了dp[i]


    }
};

这里想的很深的话 容易绕进去到底第一步和顶层最后一步要不要计算花费?记住只算一头就成,这里用的是,计算第一步的时候就需要支出花费了,最后一层不需要,直接看到最后两层楼梯的时候总数是多少,从中选择较小的一个就可以。

其实简单的用直觉理解,还很清晰。

最后不要忘了 输出是dp table中最后两个输出中的最小值 表示在顶层{第cost.size() +1层}的时候回头去看前面两层,都是不需要花费就能够到达顶层了。

PS:

注意记一下这里的输出格式 std::cout << std::endl l表示换行 << 用来分割元素

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值