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

贪心算法求解加油站问题

代码随想录链接:代码随想录

思路:

首先构造一个差距数组diff,其中每个位置的值都是gas数组和cost数组对应位置的值的差

初始化一个变量start记录从哪个加油站出发,一个变量cursum记录从start出发时车内油量的总和,一个变量totsum表示整个差距数组diff的元素之和

依次遍历差距数组中的每个元素,每遍历一个就更新cursum和totsum,之后判断cursum是否小于0,如果小于0则表示从start出发无法遍历全部的加油站,同时置start为i+1以及将cursum置于0

遍历完毕全部的元素之后,判断totsum是否小于0,如果小于0表示无法找到合适的出发位置能够遍历整个数组,此时返回-1,否则变量start表示的便是能够出发遍历全部加油站的起始位置,将其返回即可

对应代码:

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int curSum = 0;
        int totalSum = 0;
        int index = 0;
        for (int i = 0; i < gas.length; i++) {
            curSum += gas[i] - cost[i];
            totalSum += gas[i] - cost[i];
            if (curSum < 0) {
                index = (i + 1) % gas.length ; 
                curSum = 0;
            }
        }
        if (totalSum < 0) return -1;
        return index;
    }
}


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

相关文章:

  • K8s 无头服务(Headless Service)
  • 分别查询 user 表中 avatar 和 nickname 列为空的用户数量
  • Springboot + vue3 实现大文件上传方案:秒传、断点续传、分片上传、前端异步上传
  • 游戏引擎学习第58天
  • 修改el-select下拉框高度;更新:支持动态修改
  • Verdi -- 打开Consol,创建和执行tcl命令举例
  • 《ROS2 机器人开发 从入门道实践》 鱼香ROS2——第4章内容
  • WebAuthn 项目常见问题解决方案
  • C++抽象类与类继承相关注意事项 [学习笔记]
  • select 1 from table的作用 详解
  • 【ue5学习笔记2】在场景放入一个物体的蓝图输入事件无效?
  • sentinel学习笔记8-系统自适应与黑白名单限流
  • LabVIEW实现GSM/GPRS通信
  • LeetCode 3138.同位字符串连接的最小长度:计数(一个数最多128个因数)
  • Python中定位元素包含文本信息的详细解析与代码示例
  • QWebChannel实现与JS的交互
  • 使用React构建一个掷骰子的小游戏
  • skywalking 搭建
  • 【漫话机器学习系列】016.误差中的偏差(BIAS)
  • 【漏洞复现】CVE-2015-5531 Arbitrary File Reading
  • 序列化和反序列化(二)
  • ML-Agents 概述(二)
  • windows C++ TCP客户端
  • 类设计者的核查表
  • 微软远程桌面APP怎么用
  • 算法专题——双指针