1 public int canCompleteCircuit(int[] gas, int[] cost) { 2 int begin=0; 3 int sum=0; 4 int i=0; 5 int n=0; 6 int end=0; 7 int count=gas.length; 8 while(n<count-1){ 9 sum+=gas[i]-cost[i]; 10 if(sum>=0){ 11 end++; 12 i=end; 13 }else{ 14 begin--; 15 if(begin<0){ 16 begin=count-1; 17 } 18 i=begin; 19 } 20 n++; 21 } 22 sum+=gas[i]-cost[i]; 23 if(sum>=0) 24 return begin; 25 else 26 return -1; 27 }