134. Gas Station

134. 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.

Hide Tags

Greedy

public class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int start = 0; //start from start
        while(start<gas.length) {
            int net = gas[start] - cost[start];
            if(net < 0) {
                ++start;
                continue;
            }

            int current = start;
            int sum = net;
            int count = 1; //already visit current, can start the journey with sum
            while(count < gas.length) {
                ++current; //go to the next stop
                if(current == gas.length)
                    current = 0;

                sum += gas[current] - cost[current];
                if(sum<0) {
                    if(current + 1 <= start) //fix the case gas[2,4] with cost[3,4]
                        return -1;
                    start = current + 1; //start from next one.
                    break;
                }
                ++count;
            }

            if(count == gas.length)
                return start;
        }
        return -1;
    }
}

Simpler solution:

public class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
    int start = 0, total = 0, tank = 0;
    //if car fails at ‘start‘, record the next station
    for (int visited = 0; visited < gas.length; ++visited) {
      tank += gas[visited] - cost[visited];

      if (tank < 0) {
        start = visited + 1;
        total += tank;
        tank = 0;
      }
    }

    return (total + tank < 0) ? -1 : start;
  }
}
时间: 2024-10-11 09:30:27

134. Gas Station的相关文章

[Lintcode]187. Gas Station/[Leetcode]134. Gas Station

187. Gas Station/134. Gas Station 本题难度: Medium Topic: Greedy Description 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

134. Gas Station(js)

134. Gas Station There are N gas stations along a circular route, where the amount of gas at station iis 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 j

[leetcode greedy]134. 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 e

[email&#160;protected] [134] Gas station (Dynamic Programming)

https://leetcode.com/problems/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 sta

134. Gas Station (Array; DP)

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 e

[leedcode 134] 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 e

[leetcode]134. 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 e

134 Gas Station 加油站

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i].你有一辆油箱容量无限的的汽车,从第 i 个加油站前往第 i+1 个加油站需要消耗汽油 cost[i].你从其中一个加油站出发,开始时油箱为空.如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回-1.注意:给定的数据可保证答案是唯一的.详见:https://leetcode.com/problems/gas-station/description/ class Solution { public: int canCom

[LeetCode]Gas Station

新年啦,大家新年快乐~~ 由于新年呢,所以最近很少做题,今天终于有时间可以打打代码了 134. 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