当前位置:网站首页>LeetCode 871. 最低加油次数
LeetCode 871. 最低加油次数
2022-07-04 18:53:00 【JIeJaitt】
汽车从起点出发驶向目的地,该目的地位于出发位置东面 target
英里处。
沿途有加油站,每个 station[i]
代表一个加油站,它位于出发位置东面 station[i][0]
英里处,并且有 station[i][1]
升汽油。
假设汽车油箱的容量是无限的,其中最初有 startFuel
升燃料。它每行驶 1 英里就会用掉 1 升汽油。
当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。
为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则返回 -1
。
注意:如果汽车到达加油站时剩余燃料为 0,它仍然可以在那里加油。如果汽车到达目的地时剩余燃料为 0,仍然认为它已经到达目的地。
示例 1:
输入:target = 1, startFuel = 1, stations = [] 输出:0 解释:我们可以在不加油的情况下到达目的地。
示例 2:
输入:target = 100, startFuel = 1, stations = [[10,100]] 输出:-1 解释:我们无法抵达目的地,甚至无法到达第一个加油站。
示例 3:
输入:target = 100, startFuel = 10, stations = [[10,60],[20,30],[30,30],[60,40]] 输出:2 解释: 我们出发时有 10 升燃料。 我们开车来到距起点 10 英里处的加油站,消耗 10 升燃料。将汽油从 0 升加到 60 升。 然后,我们从 10 英里处的加油站开到 60 英里处的加油站(消耗 50 升燃料), 并将汽油从 10 升加到 50 升。然后我们开车抵达目的地。 我们沿途在1两个加油站停靠,所以返回 2 。
提示:
1 <= target, startFuel, stations[i][1] <= 10^9
0 <= stations.length <= 500
0 < stations[0][0] < stations[1][0] < ... < stations[stations.length-1][0] < target
贪心题,证明起来比较困难,但是思路比较直接。
具体做法如下。
计算当前位置(加油站或目的地)与上一个位置的距离之差,根据该距离之差得到从上一个位置行驶到当前位置需要使用的汽油量,将使用的汽油量从剩余的汽油量中减去。
如果剩余的汽油量小于 000,则表示在不加油的情况下无法从上一个位置行驶到当前位置,需要加油。取出优先队列中的最大元素加到剩余的汽油量,并将加油次数加 111,重复该操作直到剩余的汽油量大于等于 000 或优先队列变为空。
如果优先队列变为空时,剩余的汽油量仍小于 000,则表示在所有经过的加油站加油之后仍然无法到达当前位置,返回 −1-1−1。
如果当前位置是加油站,则将当前加油站的加油量添加到优先队列中,并使用当前位置更新上一个位置。
class Solution {
public:
int minRefuelStops(int target, int startFuel, vector<vector<int>>& stations) {
stations.push_back({
target,0});
int res=0;
priority_queue<int> heap;
for (auto& p:stations) {
int x=p[0],y=p[1];
while(heap.size() && startFuel<x) {
startFuel += heap.top();
heap.pop();
res ++;
}
if (startFuel<x) return -1;
heap.push(y);
}
return res;
}
};
边栏推荐
- ICML 2022 | Meta提出鲁棒的多目标贝叶斯优化方法,有效应对输入噪声
- 水晶光电:长安深蓝SL03的AR-HUD产品由公司供应
- What does the neural network Internet of things mean? Popular explanation
- [QNX hypervisor 2.2 user manual]6.3.1 factory page and control page
- 实践示例理解js强缓存协商缓存
- Pointnext: review pointnet through improved model training and scaling strategies++
- Template_ Judging prime_ Square root / six prime method
- Pointnet / pointnet++ point cloud data set processing and training
- 一文搞懂Go语言中文件的读写与创建
- C # better operation mongodb database
猜你喜欢
Aiming at the "amnesia" of deep learning, scientists proposed that based on similarity weighted interleaved learning, they can board PNAS
#夏日挑战赛#带你玩转HarmonyOS多端钢琴演奏
c# . Net MVC uses Baidu ueditor rich text box to upload files (pictures, videos, etc.)
Installation and use of VMware Tools and open VM tools: solve the problems of incomplete screen and unable to transfer files of virtual machines
How is the entered query SQL statement executed?
Every time I look at the interface documents of my colleagues, I get confused and have a lot of problems...
Regular replacement [JS, regular expression]
ICML 2022 | meta proposes a robust multi-objective Bayesian optimization method to effectively deal with input noise
Flet教程之 06 TextButton基础入门(教程含源码)
紫光展锐完成全球首个 5G R17 IoT NTN 卫星物联网上星实测
随机推荐
Taishan Office Technology Lecture: about the order of background (shading and highlighting)
应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设
SSRS筛选器的IN运算(即包含于)用法
Application practice | Shuhai supply chain construction of data center based on Apache Doris
Practical examples of node strong cache and negotiation cache
repeat_ P1002 [NOIP2002 popularization group] cross the river pawn_ dp
How to adapt your games to different sizes of mobile screen
华为nova 10系列支持应用安全检测功能 筑牢手机安全防火墙
Actual combat simulation │ JWT login authentication
Lingyun going to sea | 10 jump &huawei cloud: jointly help Africa's inclusive financial services
【ISMB2022教程】图表示学习的精准医疗,哈佛大学Marinka Zitnik主讲,附87页ppt
Form组件常用校验规则-1(持续更新中~)
Small hair cat Internet of things platform construction and application model
FS8B711S14电动红酒开瓶器单片机IC方案开发专用集成IC
Kotlin classes and objects
精选综述 | 用于白内障分级/分类的机器学习技术
解密函数计算异步任务能力之「任务的状态及生命周期管理」
Data set division
Kotlin inheritance
Dynamic memory management