主题思想: 这个肯定O(n)有些事情需要考虑清楚,如果遇到哪个站点,无法走下去了,肯定需要从下一个站点重新开始才有可能继续走下去。
记录下总的气量和花费气量差值,如果小于0,肯定无法完成。
class Solution {
public int canCompleteCircuit(int[] gas, int[] cost) {
if(gas==null||gas.length==0) return -1;
int total=0;
int sum=0;
int start=0;
int N=gas.length;
for(int i=0;i<N;i++){
sum+=gas[i]-cost[i];
if(sum<0){
total+=sum;
sum=0;
start=i+1;
}
}
total+=sum;
return total<0?-1: start;
}
}