LinCode_187 Gas Station
来源:互联网 发布:丁丁装修软件 编辑:程序博客网 时间:2024/06/11 20:44
There are N gas stations along a circular route, where the amount of gas at station i isgas[i]
.
You have a car with an unlimited gas tank and it costs cost[i]
of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.
Return the starting gas station's index if you can travel around the circuit once, otherwise return -1.
Notice
The solution is guaranteed to be unique.
Example
Given 4
gas stations with gas[i]=[1,1,3,1]
, and the cost[i]=[2,2,1,1]
. The starting gas station's index is 2
.
Challenge
O(n) time and O(1) extra space
思路是如果所有的和大于0的话,肯定有一段的和大于0, 找到那一段就行了。如果负的中间有正的一小段, 不用担心后面那段负的肯定会把正的抵消掉。所以找到的那段正的就是最大的那段。
class Solution {public: /** * @param gas: a vector of integers * @param cost: a vector of integers * @return: an integer */ int canCompleteCircuit(vector<int> &gas, vector<int> &cost) { // write your code here if(gas.size() == 0 || cost.size() == 0 || gas.size() != cost.size()) return -1; int total = 0, sum = 0, start = 0; for(int i = 0; i < gas.size(); ++i){ total += (gas[i] - cost[i]); if(sum < 0){ //发现油箱空了,从下一个站点尝试 sum = (gas[i] - cost[i]); start = i; }else sum += (gas[i] - cost[i]); } return total < 0 ? -1 : start; //用total判断start 是否是满足要求的解 } };
0 0
- LinCode_187 Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Gas Station
- Ubuntu 创建android手机能够连接的Wifi热点
- js中setInterval中出现的问题
- javaweb学习总结(四十)——编写自己的JDBC框架
- LintCode_154 Regular Expression Matching
- javaweb学习总结(四十一)——Apache的DBUtils框架学习
- LinCode_187 Gas Station
- 凌晨四点零九分
- javaweb学习总结(四十二)——Filter(过滤器)学习
- BFS print BT all path from root to leaf
- javaweb学习总结(四十三)——Filter高级开发
- Mac中安装tar包的Mysql服务
- javaweb学习总结(四十四)——监听器(Listener)学习
- LintCode_189 First Missing Positive
- javaweb学习总结(四十五)——监听器(Listener)学习二