java.lang.Object
g0801_0900.s0871_minimum_number_of_refueling_stops.Solution

public class Solution extends Object
871 - Minimum Number of Refueling Stops.<p>Hard</p> <p>A car travels from a starting position to a destination which is <code>target</code> miles east of the starting position.</p> <p>There are gas stations along the way. The gas stations are represented as an array <code>stations</code> where <code>stations[i] = [position<sub>i</sub>, fuel<sub>i</sub>]</code> indicates that the <code>i<sup>th</sup></code> gas station is <code>position<sub>i</sub></code> miles east of the starting position and has <code>fuel<sub>i</sub></code> liters of gas.</p> <p>The car starts with an infinite tank of gas, which initially has <code>startFuel</code> liters of fuel in it. It uses one liter of gas per one mile that it drives. When the car reaches a gas station, it may stop and refuel, transferring all the gas from the station into the car.</p> <p>Return <em>the minimum number of refueling stops the car must make in order to reach its destination</em>. If it cannot reach the destination, return <code>-1</code>.</p> <p>Note that if the car reaches a gas station with <code>0</code> fuel left, the car can still refuel there. If the car reaches the destination with <code>0</code> fuel left, it is still considered to have arrived.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> target = 1, startFuel = 1, stations = []</p> <p><strong>Output:</strong> 0</p> <p><strong>Explanation:</strong> We can reach the target without refueling.</p> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> target = 100, startFuel = 1, stations = [[10,100]]</p> <p><strong>Output:</strong> -1</p> <p><strong>Explanation:</strong> We can not reach the target (or even the first gas station).</p> <p><strong>Example 3:</strong></p> <p><strong>Input:</strong> target = 100, startFuel = 10, stations = [[10,60],[20,30],[30,30],[60,40]]</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> We start with 10 liters of fuel. We drive to position 10, expending 10 liters of fuel.</p> <p>We refuel from 0 liters to 60 liters of gas.</p> <p>Then, we drive from position 10 to position 60 (expending 50 liters of fuel),</p> <p>and refuel from 10 liters to 50 liters of gas. We then drive to and reach the target.</p> <p>We made 2 refueling stops along the way, so we return 2.</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= target, startFuel <= 10<sup>9</sup></code></li> <li><code>0 <= stations.length <= 500</code></li> <li><code>0 <= position<sub>i</sub> <= position<sub>i+1</sub> < target</code></li> <li><code>1 <= fuel<sub>i</sub> < 10<sup>9</sup></code></li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • minRefuelStops

      public int minRefuelStops(int target, int startFuel, int[][] stations)