fazer o caminho circular completo, o exercício de caminho mais curto?

Consegui essa pergunta em uma entrevista e não consegui resolvê-l

Você tem uma estrada circular, com N número de postos de gasolina. Você sabe a quantidade de gás que cada estação possui. Você sabe a quantidade de gás que precisa para ir de uma estação para a próxima. Seu carro começa com 0 gasolina. A pergunta é: Crie um algoritmo para saber em qual posto de gasolina você deve começar a dirigir para CONCLUIR o CAMINHO circular. Não especifica que você deve visitar todas as estações. Você só pode dirigir no sentido horário.

Eu tive que fazer isso em c #

O único código que comecei é com uma entidade GasStation

class GasStation
  int gasAtStation;
  int gasToMoveToNextStationNeeded;
  string nameOfGasStation;


GasTation wheretoStart(List<GasStation> list)
{

}

Fiz assim:

static void Main(string[] args)
        {
            int[] gasOnStation = {1, 2, 0, 4};
            int[] gasDrivingCostTonNextStation = {1, 1,2, 1};

            FindStartingPoint(gasOnStation, gasDrivingCostTonNextStation);

        }

        static void FindStartingPoint(int[] gasOnStation, int[] gasDrivingCosts)
        {
            // Assume gasOnStation.length == gasDrivingCosts.length
            int n = gasOnStation.Length;
            int[] gasEndValues = new int[n];
            int gasValue = 0;
            for (int i = 0; i < n; i++)
            {
                gasEndValues[i] = gasValue;
                gasValue += gasOnStation[i];
                gasValue -= gasDrivingCosts[i];
            }

            if (gasValue < 0)
            {
                Console.WriteLine("Instance does not have a solution");
                Console.ReadLine();
            }
            else
            {
                // Find the minimum in gasEndValues:
                int minI = 0;
                int minEndValue = gasEndValues[0];
                for (int i = 1; i < n; i++)
                {
                    if (gasEndValues[i] < minEndValue)
                    {
                        minI = i;
                        minEndValue = gasEndValues[i];
                    }
                }

                Console.WriteLine("Start at station: " + minI);
                Console.ReadLine();
            }
        }

Obrigad

questionAnswers(8)

yourAnswerToTheQuestion