LeetCode 134. 加油站(贪心)
原题链接
中等
作者:
我要出去乱说
,
2021-07-17 21:00:11
,
所有人可见
,
阅读 327
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int curSum = 0, totalSum = 0, st = 0; //当前汽油量,总汽油量,起点
for (int i = 0; i < gas.size(); ++ i)
{
curSum += gas[i] - cost[i]; //累加当前站汽油量
totalSum += gas[i] - cost[i];
if (curSum < 0) //当前汽油量小于0,即从第0站到第i站都不能作为起点站
{ //因为中途会断油
curSum = 0; //贪心原理,当前汽油量清零
st = i + 1; //起点只能从下一点开始
}
}
if (totalSum < 0) return -1; //总汽油量小于消耗汽油量的情况
return st;
}
};