题解
计算每一个加油站的油量减去当前加油站到下一加油站所需要的油量,将他们都累加。如果在某一个加油站累加的值小于0,说明从0到该点中的一点作为起点都不能到达终点。从该点的下一个位置重新判断,下一个位置开始,重新计算累加值,直至遍历完所有加油站。 如果所有加油站的差值累加都小于0,说明消耗的油量大于加油站的油量,肯定行驶一周。
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int cur=0;
int total=0;
int start=0;
for(int i=0;i<gas.length;i++){
cur+=gas[i]-cost[i];//阶段性加
total+=gas[i]-cost[i];//总加
if(cur<0){
start=(i+1)%gas.length;
cur=0;
}
}
if(total<0) return -1;
return start;
}
}