871. 最低加油次数
871. Minimum Number of Refueling Stops
class Solution {
public:
int minRefuelStops(int target, int startFuel, vector<vector<int>>& stations) {
priority_queue<int> PQ; // 优先队列,找出之前可以加最多油是多少
int cnt = 0, now_site = startFuel, fuel = 0, stations_cnt = 0;
while(now_site < target) { // 当前位置不到目标位置
while(stations_cnt < stations.size() && stations[stations_cnt][0] <= now_site) {
PQ.push(stations[stations_cnt][1]); // 把所有经过的加油站可以加的油都保存到优先队列里
stations_cnt++;
}
if(PQ.empty()) return -1; // 无油可加
fuel = PQ.top();
PQ.pop();
now_site += fuel; // 加油,加的是之前可以加最多的那个
cnt++;
}
return cnt;
}
};