use std::collections::BinaryHeap;
impl Solution { pub fn min_refuel_stops(target: i32, start_fuel: i32, stations: Vec<Vec<i32>>) -> i32 { let (mut cur, mut stops, mut i) = (start_fuel, 0, 0); let mut q = BinaryHeap::new(); loop { if cur >= target { return stops; } while i < stations.len() && stations[i][0] <= cur { q.push(stations[i][1]); i += 1; } if q.is_empty() { break; } cur += q.pop().unwrap(); stops += 1; }
return -1; } }
|