在一条环路上有 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 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。

贪心

  1. 如果gas的总和小于cost总和,那么无论从哪里出发,一定是跑不了一圈的;
  2. remain[i] = gas[i]-cost[i]为从i加油站到i+1加油站剩下的油,i从0开始计算累加到最后一站,如果累加没有出现负数,说明从0出发,油就没有断过,那么0就是起点;
  3. 如果累加的最小值是负数,就要从非0节点出发,从后向前,看哪个节点能这个负数填平。

Python

class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:currentSum = 0minn = max(gas)for i in range(len(gas)):remain = gas[i] - cost[i]currentSum += remainif currentSum < minn:minn = currentSumif currentSum < 0:return -1elif minn > -1:return 0for i in range(len(gas) - 1, -1, -1):remain = gas[i] - cost[i]minn += remainif minn > -1:return ireturn -1

134. Gas Station 加油站相关推荐

  1. 134. Gas Station加油站

    [抄题]: There are N gas stations along a circular route, where the amount of gas at station i is gas[i ...

  2. LeetCode 134 Gas Station

    LeetCode 134 Gas Station 水题,暴力一下就ok class Solution { public:int tag[100005];int sum[100005];int canC ...

  3. LeetCode 134. Gas Station

    LeetCode 134. Gas Station Solution1:我的答案,无数次试错得到的,不成系统,没有思路.. 时间复杂度O(n2)O(n2)O(n^2) class Solution { ...

  4. LeetCode 134.Gas Station 解题分析

    题目来源: https://leetcode.com/problems/gas-station/description/ 题目描述: There are N gas stations along a ...

  5. Gas Station 加油站

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

  6. 加油python_力扣——gas station (加油站) python实现

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

  7. PAT甲级1072 Gas Station (30 分):[C++题解]dijkstra算法、最短路

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 所有的dist[ ]都≤Ds:最小的dist[ ]最大; dist[ ] 总和最大. 由于加油站是字符,为了简单起见,将m个加油站编 ...

  8. pat 甲级 1072. Gas Station (30)

    1072. Gas Station (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A gas sta ...

  9. [leetcode] Gas Station

    题目描述: There are N gas stations along a circular route, where the amount of gas at stationi is gas[i] ...

最新文章

  1. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)
  2. 嘿,程序员,你该学点经济学了!
  3. Remove Duplicates from Sorted Array II -- LeetCode
  4. 课堂上的社死现场...
  5. Win32 一个helloworld对话框
  6. fir.im Weekly - 聊聊 Google 开发者大会
  7. Atitit 迭代法  “二分法”和“牛顿迭代法 attilax总结
  8. 2012年2月份第1周51Aspx源码发布详情
  9. 古体字与简体字对照表_简体字繁体字对照表
  10. Vue.js 快速入门 (一) —— Vue基础
  11. N720 拨号上网遇到的问题 /var/lock/LCK
  12. 国密(1) - 私钥Key文件( PEM格式)编解码方法
  13. 已知两数的最大公因数和最小公倍数
  14. excel表格怎么关闭函数计算机,excel表格的数据如何去掉公式-如何取消Excel表格里面的函数公式...
  15. 操作系统中的进程调度策略有哪几种
  16. Local Generic Representation for Face Recognition with Single Sample per Person (ACCV, 2014)
  17. Springcould学习总结
  18. 笔记本光驱未连接在计算机上,笔记本电脑光驱,详细教您笔记本光驱怎么打开...
  19. 前锋html5费用,足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿...
  20. html 怪异模式,CSS_浅谈CSS编程中的怪异模式,怪异模式盒模型 今天学习了 - phpStudy...

热门文章

  1. 在 Linux 上安装 Oracle 数据库 11g
  2. 默认轮播,鼠标移入停止,移出继续
  3. php5.4以下,json_encode不转义实现方法
  4. Socket阻塞与非阻塞,同步与异步、I/O模型
  5. OnInit 和 Page_Init 事件有什么不同
  6. ODP.NET 10.2.0.20发布了
  7. 未定义标识符 stringc/c++(20)_Python 标识符命名规则
  8. Java黑皮书课后题第7章:*7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目
  9. php提交飞信,php发送飞信消息
  10. 程序员面试100题之十六:二叉树中两个节点的最近公共父节点