leetcode--Gas Station

There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.

Return the starting gas station's index if you can travel around the circuit once, otherwise return -1.

Note:
The solution is guaranteed to be unique.

 1 public class Solution {
 2     public int canCompleteCircuit(int[] gas, int[] cost) {
 3         int starts = 0;
 4         int sum1 = 0;
 5         int sum2 = 0;
 6         for(int i = 0; i < gas.length; ++i){
 7             sum2 += gas[i] - cost[i];
 8             if(sum2 < 0){
 9                 sum1 += sum2;
10                 sum2 = 0;
11                 starts = i + 1;
12             } 
13         }
14         if(sum1 + sum2 <0)
15             starts = -1;
16         return starts;
17     }
18 }

 Another solution

public class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int length = gas.length, startStation = length - 1, canReach = 0;
		int gasInTank = gas[startStation];
		int costInSum = cost[startStation];
		while(canReach < startStation){
			if(gasInTank >= costInSum){
				gasInTank += gas[canReach];
				costInSum += cost[canReach];
				++canReach;
			}
			else{
				--startStation;
				costInSum += cost[startStation];
				gasInTank += gas[startStation];
			}
		}
		startStation = (gasInTank >= costInSum) ? startStation : -1;
		return startStation;
    }
}

  

原文地址:https://www.cnblogs.com/averillzheng/p/3536711.html