思路:可以找到最紧缺油的地方,那他最有可能是旅程的最后一战,那他的下一个就最可能是起点。定义sum = sum +获得的油+消耗的油。那么如果sum<0,那就是缺油的,就不可能作为起点,那么就可以与最小值进行对比从而找出最缺油的地点。那么如果最终的sum>0,说明一定能找到这个点,也就是最缺油点的后面那个点。
注意:最后要sum>0才会有起点
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
int sum = 0;
int min = Integer.MAX_VALUE;
int minIndex = -1;
for(int i = 0; i < gas.length; i++){
sum = sum + gas[i] - cost[i];
if(sum < min && sum < 0){
min = sum;
minIndex = i;
}
}
if(sum < 0) return -1;
return minIndex + 1 ;
}
}