class Solution {
public:
int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
//這個題目有兩個問題需要解決
//①:加油車是否能夠走完一圈:一次循環把花費的汽油和加入的汽油進行加減,如果大於0可以,否則不可以。
//②:在哪個位置起始能夠走完一圈:對每一個加油站設置一個變量diff,cost(路上總共花費的)-gas(已經有的) = diff。如果每個站點的diff都是
//costs表示每一個經過每個加油站剩余的油,當油不足以到達下一個加油站的時候,從當前加油站重新計算。前面的加油站都不符合要求
//total表示總共的經過所有加油站剩余的油
int costs = 0;
int index = -1;
int total = 0;
int distance = gas.size();
for (int i=0; i<distance; i++){
costs += gas[i] - cost[i];
total += gas[i] - cost[i];
if (costs < 0){
index = i;
costs = 0;
}
}
if (total < 0)
return -1;
else
return index+1 ;
}
};