当前位置: 首页 > article >正文

加油站(力扣134)

既然每一个加油站都有对应的加油量和耗油量,我们不妨计算一下每个加油站的汽油净增量。如果每个加油站净增量之和不为负数,则说明一定可以找到唯一的起始点。那我们该如何找到这个起始点呢?我们设置最开始的起点为第0个加油站,接着通过for循环往后遍历每一个加油站,同时将每个加油站的净增量逐个累加。在这个过程中我们运用贪心思想:当汽油净增量之和为负数时,我们就可以将起始点更新到当前加油站的下一位。大家可以结合我下面的代码及详细注释理解此题。

代码及详细注释如下:

class Solution {
public:
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
        vector<int> sum(gas.size() + 1);
        //计算每个加油站的油量净增多少
        for(int i = 0;i < gas.size();i++){
            sum[i] = gas[i] - cost[i];
        }
        int total = 0;
        for(int i = 0;i < sum.size();i++){
            total += sum[i];
        }
        //用全局视先判断问题是否存在解
        if(total < 0) return -1;
        int Cursum = 0;
        int start = 0;
        for(int i = 0;i < sum.size();i++){
            Cursum += sum[i];
        //当前汽油为负数时,就要将下一位设置为新的start
            if(Cursum < 0){
        //记得清0当前汽油量
                Cursum = 0;
                start = i + 1;
                continue;
            }
        }
        return start;
    }
};


http://www.kler.cn/a/558314.html

相关文章:

  • 机器学习做模型预测时超参数优化提升性能(降低评价指标)五种种方法:网格搜索、随机搜索、贝叶斯优化、遗传算法、基于梯度的优化
  • k8s学习记录(二):Pod基础篇
  • Java 使用websocket
  • 【多模态处理篇五】【DeepSeek文档解析:PDF/Word智能处理引擎】
  • Git命令详解与工作流介绍:全面掌握版本控制系统的操作指南
  • DeepSeek R1本地+私有云版医疗AI部署开发成功案例技术剖析
  • 机器视觉视觉halcon3d中位姿的定义
  • 运维Ansible面试题及参考答案
  • 09.容器单机编排工具 Docker Compose
  • leetcode hot100-34 合并K个升序链表
  • Swiper插件的运用和学习
  • 自动驾驶与智慧交通:未来城市的交通革命即将来临
  • 基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • EquinoxProject:一个适合学习DDD、CQRS、Event Sourcing等技术.Net Web框架搭建开源项目
  • 【落羽的落羽 数据结构篇】树、二叉树
  • 请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?
  • .NET周刊【2月第2期 2025-02-09】
  • Docker Mysql 数据迁移
  • 1.24作业
  • 技术总结汇总