From f93b802fbd9ec8e3f92378436d5dd58007f69242 Mon Sep 17 00:00:00 2001 From: Nimish Srivastava <54949793+nimishh7@users.noreply.github.com> Date: Sun, 6 Oct 2024 16:20:23 +0530 Subject: [PATCH 1/2] Added gas_station.py --- data_structures/arrays/gas_station.py | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 data_structures/arrays/gas_station.py diff --git a/data_structures/arrays/gas_station.py b/data_structures/arrays/gas_station.py new file mode 100644 index 000000000000..ec5fee013189 --- /dev/null +++ b/data_structures/arrays/gas_station.py @@ -0,0 +1,44 @@ +from typing import list + +class Solution: + def can_complete_circuit(self, gas: list[int], cost: list[int]) -> int: + # Step 1: Initialize variables + # total_gas will keep track of the total balance of gas - cost across all stations + # current_gas will track the gas balance for the current trip from the starting station + # start_station will track the potential starting point of the circuit + total_gas = 0 + current_gas = 0 + start_station = 0 + + # Step 2: Loop through each gas station + for i in range(len(gas)): + # Calculate the net gas gain/loss at the current station + total_gas += gas[i] - cost[i] + current_gas += gas[i] - cost[i] + + # Step 3: If current_gas becomes negative, it means we cannot continue + # the journey from the current start_station, so we update the start_station + # to the next one and reset the current_gas to 0. + if current_gas < 0: + start_station = i + 1 # Move the starting station to the next one + current_gas = 0 # Reset the gas for the new start + + # Step 4: Check if the total gas is enough to complete the circuit + # If total_gas is negative, it means the entire circuit cannot be completed + if total_gas < 0: + return -1 + else: + # If total_gas is non-negative, return the start_station as the answer + return start_station + +# Example usage with hints: + +# Example 1: +gas = [1, 2, 3, 4, 5] +cost = [3, 4, 5, 1, 2] + +# Step-by-step hint: +# 1. Start from station 3 (index 3), where the gas is 4 and the cost to the next station is 1. +# 2. Keep tracking the current gas and total gas balance as you move through the stations. +solution = Solution() +print(solution.can_complete_circuit(gas, cost)) # Output: 3 From be79e4801a5e46c6fbd713a5de42ea556ccfe31f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 10:52:12 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/gas_station.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data_structures/arrays/gas_station.py b/data_structures/arrays/gas_station.py index ec5fee013189..a421ecfa8f85 100644 --- a/data_structures/arrays/gas_station.py +++ b/data_structures/arrays/gas_station.py @@ -1,5 +1,6 @@ from typing import list + class Solution: def can_complete_circuit(self, gas: list[int], cost: list[int]) -> int: # Step 1: Initialize variables @@ -9,13 +10,13 @@ def can_complete_circuit(self, gas: list[int], cost: list[int]) -> int: total_gas = 0 current_gas = 0 start_station = 0 - + # Step 2: Loop through each gas station for i in range(len(gas)): # Calculate the net gas gain/loss at the current station total_gas += gas[i] - cost[i] current_gas += gas[i] - cost[i] - + # Step 3: If current_gas becomes negative, it means we cannot continue # the journey from the current start_station, so we update the start_station # to the next one and reset the current_gas to 0. @@ -31,6 +32,7 @@ def can_complete_circuit(self, gas: list[int], cost: list[int]) -> int: # If total_gas is non-negative, return the start_station as the answer return start_station + # Example usage with hints: # Example 1: