如果题目有解,该答案即为唯一答案。
答案唯一的前提条件简化了这个问题,累计两个数组的前n个元素差值,取差值最小(负得最多)的车站为出发车站,可以看做从0到i消耗了最多的汽油。
最后需要判断前一段积累的汽油是否足够开完后一段。
134. 加油站
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
int n=gas.size();
if(n==0) return -1;
int tip=0;
int ans=0;
int num=0;
for (int i=0;i<n;i++){
tip+=gas[i]-cost[i];
if (tip<ans){
ans=tip;
num=i+1;
}
}
if (tip>=0) return num;
else return -1;
}
};