文章目录

  • 1. 题目
  • 2. 解题

1. 题目

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。

说明:
如果题目有解,该答案即为唯一答案。
输入数组均为非空数组,且长度相同。
输入数组中的元素均为非负数。

示例 1:
输入:
gas  = [1,2,3,4,5]
cost = [3,4,5,1,2]输出: 3
解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。示例 2:
输入:
gas  = [2,3,4]
cost = [3,4,3]输出: -1
解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/gas-station
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 首先能量守恒:allOil−allcost<0,impossibleallOil-allcost < 0, impossibleallOil−allcost<0,impossible
  • 从某个点开始累积的 oil−costoil-costoil−cost 值出现负的,说明刚才加上来这段 oiloiloil 不够(前面都过不来),起点只可能在后面,重新累积差值
class Solution {public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int totalOil = 0, curOil = 0, start = 0;for(int i = 0; i < gas.size(); ++i){curOil += gas[i]-cost[i];totalOil += gas[i]-cost[i];if(curOil < 0){start = i+1;curOil = 0;}}if(totalOil < 0)return -1;return start;}
};

LeetCode 134. 加油站(贪心)相关推荐

  1. 168. Leetcode 134. 加油站 (贪心算法-模拟题目)

    class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:cur_rest_acc ...

  2. 用java写一个汽车加油的程序_Java实现 LeetCode 134 加油站

    134. 加油站 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升 ...

  3. leetcode 134. 加油站 思考分析

    目录 题目 1.暴力法,双层遍历 2.贪心 题目 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站 ...

  4. LeetCode 134 加油站 全面详细题解【持续更新所有解法】

    题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/gas-station 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. ...

  5. Leetcode 134. 加油站 解题思路及C++实现

    方法一:直接暴力方法 解题思路: 当 gas[i] >= cost[i] 时,这个加油站才可能是个出发点,遍历gas容器(数组),当出现 gas[i] >= cost[i] 时,看看以这个 ...

  6. leetcode 134. 加油站(Gas Station)

    目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+ ...

  7. leetcode 134. 加油站

    在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其中的一个加 ...

  8. LeetCode 134. 加油站(C++)

    在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其中的一个加 ...

  9. 2022-5-25 Leetcode 134.加油站

    我的代码,一直有点问题 class Solution {public:int canCompleteCircuit(vector<int>& gas, vector<int& ...

最新文章

  1. 据说是腾讯php程序员面试题目 蛋疼..要是提供PHP手册就HI了..
  2. ELK5.3环境部署
  3. OpenCV差分二值化的实时场景文本检测的实例(附完整代码)
  4. MyEclipse 2014中 Window--customize perspective 功能 打不开的解决办法
  5. ACL 2019 | 图表示解决长文本关系匹配问题:腾讯提出概念交互图算法
  6. 深度学习(1)--引言
  7. 免费在线生成工具大全
  8. 魔兽世界客户端数据研究(四):M2文件头分析
  9. SpringMVC+MyBatis+MySQL实现分页
  10. Java8新特性_接口中的默认方法
  11. wifi定位算法 java_几种室内定位技术方案对比,室内定位种类的优缺点一目了然...
  12. python键盘监听
  13. android ems的作用,对话框主题活动中忽略android:minEms
  14. Mac系统如何删除.DS_Store文件且不再生
  15. 解决Glide 4.8.0 圆角与CenterCrop 的冲突问题
  16. 偶数求和打分 c语言acm,杭州电子科技大学ACM2015-偶数求和-解题思路(accept)
  17. dsp6657的helloworld例程测试-第一篇
  18. C# 关于类的继承的总结
  19. 解决Request processing failed; nested exception is com.sun.jersey.api.client.UniformInterfaceException
  20. 1.1 Python中turtle的使用(画奥运五环)

热门文章

  1. iOS当中的设计模式
  2. C语言存储空间布局以及static解析
  3. c++远征之模板篇——运算符重载
  4. c++远征之多态篇——异常处理
  5. Mysql优化之执行计划查看
  6. 《C++标准程序库》学习笔记5 — 第七章
  7. 编译原理(五)自底向上分析之算符优先分析法
  8. [BZOJ 2500] 幸福的道路
  9. hihoCoder #1143 : 骨牌覆盖问题·一
  10. 做个流量站-聚茶吧, 汇聚茶的地方