134. Gas Station
There are n gas stations along a circular route, where the amount of gas at the i^th station is gas[i]
Example 1:
- Input:
gas = [1,2,3,4,5], cost = [3,4,5,1,2] - Output:
3 - Explanation: Start at station
3(index3) and fill up with4unit ofgas. Your tank =0 + 4 = 4Travel to station4. Your tank =4 - 1 + 5 = 8Travel to station0. Your tank =8 - 2 + 1 = 7Travel to station1. Your tank =7 - 3 + 2 = 6Travel to station2. Your tank =6 - 4 + 3 = 5Travel to station3. Thecostis5. Yourgasis just enough to travel back to station3. Therefore, return3as the starting index.
Example 2:
- Input:
gas = [2,3,4], cost = [3,4,3] - Output:
-1 - Explanation: You can’t start at station
0or1, as there is not enoughgasto travel to the next station. Let’s start at station2and fill up with4unit ofgas. Your tank =0 + 4 = 4Travel to station0. Your tank =4 - 3 + 2 = 3Travel to station1. Your tank =3 - 3 + 3 = 3You cannot travel back to station2, as it requires4unit ofgasbut you only have3. Therefore, you can’t travel around the circuit once no matter where you start.
Constraints:
n == gas.length == cost.length1 <= n <= 10^50 <= gas[i], cost[i] <= 10^4- The input is generated such that the answer is unique.
Solution
class Solution:
def canCompleteCircuit(self, gas: list[int], cost: list[int]) -> int:
start, tank, total = 0, 0, 0
for i in range(len(gas)):
drive = gas[i] - cost[i]
tank = tank + drive
if tank < 0:
tank = 0
start = i + 1
total = total + drive
return start if total >= 0 else -1