871 最低加油次数
Posted innovationv2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了871 最低加油次数相关的知识,希望对你有一定的参考价值。
class Solution {
public:
//startFuel的含义是我们的车能开的距离,如果startFuel > target,那么一次加油也不需要直接开到重点
int minRefuelStops(int target, int startFuel, vector<vector<int>> &stations) {
priority_queue<int> queue;
int pos = 0, ans = 0;
stations.push_back({target, 0});//我这里把终点加进去方便程序比较
while (startFuel < target) { //当油量不能撑到终点时循环
while (pos < stations.size() - 1 && startFuel >= stations[pos][0])//把车当前油量所能开到的每一个加油站的油量都记下来
queue.push(stations[pos++][1]);
while (startFuel < stations[pos][0]) {//遇到下一站开不到则加油,使用priority_queue确保加的油量是经过的加油站里面最多的,把终点加进stations使得这一步逻辑就很方便
if (queue.empty()) //把经过的所有加油站的油都加上都到不了,那就肯定到不了
return -1;
startFuel += queue.top(); //加油
queue.pop();
++ans;
}
}
return ans;
}
};
以上是关于871 最低加油次数的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 871. Minimum Number of Refueling Stops 最少的加油站个数