当前位置:网站首页>LeetCode 871. Minimum refueling times
LeetCode 871. Minimum refueling times
2022-07-04 20:40:00 【JIeJaitt】
The car set off from the starting point to the destination , The purpose is to the east of the starting position target Miles away .
There are gas stations along the way , Every station[i] For a gas station , It's east of the starting point station[i][0] Miles away , And there are station[i][1] A litre of petrol .
Suppose the capacity of the car's fuel tank is infinite , At first there was startFuel Liter fuel . Every time it drives 1 Miles will be used 1 A litre of petrol .
When the car arrives at the gas station , It may stop to refuel , Transfer all gasoline from the gas station to the car .
In order to reach the destination , What's the minimum number of refuels necessary for a car ? If you can't get to your destination , Then return to -1 .
Be careful : If the remaining fuel when the car arrives at the gas station is 0, It can still refuel there . If the remaining fuel is 0, Still think it has reached its destination .
Example 1:
Input :target = 1, startFuel = 1, stations = [] Output :0 explain : We can get to our destination without refueling .
Example 2:
Input :target = 100, startFuel = 1, stations = [[10,100]] Output :-1 explain : We can't get to our destination , Not even getting to the first gas station .
Example 3:
Input :target = 100, startFuel = 10, stations = [[10,60],[20,30],[30,30],[60,40]] Output :2 explain : We set out with 10 Liter fuel . We drove to the starting point 10 The gas station at mile , Consume 10 Liter fuel . Take the gas from 0 To add to 60 l . then , We from 10 The gas station is miles away 60 The gas station at mile ( Consume 50 Liter fuel ), And take the gas from 10 To add to 50 l . Then we drove to our destination . We are on the way 1 Two gas stations stop , So back 2 .
Tips :
1 <= target, startFuel, stations[i][1] <= 10^90 <= stations.length <= 5000 < stations[0][0] < stations[1][0] < ... < stations[stations.length-1][0] < target
Greedy question , It's difficult to prove , But the idea is more direct .
The specific methods are as follows .
Calculate the current position ( Gas station or destination ) The distance from the previous position , According to the distance difference, the amount of gasoline needed to drive from the previous position to the current position , Subtract the amount of gasoline used from the remaining amount of gasoline .
If the remaining gasoline quantity is less than 000, It means that you cannot drive from the previous position to the current position without refueling , We need to refuel . Take the largest element in the priority queue and add it to the remaining gasoline , And increase the refueling times 111, Repeat this operation until the remaining gasoline quantity is greater than or equal to 000 Or the priority queue becomes empty .
If the priority queue becomes empty , The remaining amount of gasoline is still less than 000, It means that you still can't reach the current position after refueling at all the passing gas stations , return −1-1−1.
If the current location is a gas station , Then add the refueling volume of the current gas station to the priority queue , And update the previous location with the current location .
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;
}
};
边栏推荐
- Lingyun going to sea | Murong Technology & Huawei cloud: creating a model of financial SaaS solutions in Africa
- Talking about cookies of client storage technology
- Integretee integrates into Moonriver through xcm, bringing enterprise class privacy solutions to its ecosystem
- NetCore3.1 Json web token 中间件
- Actual combat simulation │ JWT login authentication
- C language - Introduction - Foundation - grammar - process control (VII)
- Qt编写物联网管理平台38-多种数据库支持
- LeetCode 871. 最低加油次数
- node强缓存和协商缓存实战示例
- So this is the BGP agreement
猜你喜欢
Practical examples of node strong cache and negotiation cache

Free soldier

Actual combat simulation │ JWT login authentication
MySQL中的日期时间类型与格式化方式

Chrome development tool: what the hell is vmxxx file

剑指 Offer II 80-100(持续更新)

电脑怎么保存网页到桌面上使用

紫光展锐完成全球首个 5G R17 IoT NTN 卫星物联网上星实测

二叉树的四种遍历方式以及中序后序、前序中序、前序后序、层序创建二叉树【专为力扣刷题而打造】

Neural network IOT platform construction (IOT platform construction practical tutorial)
随机推荐
[Beijing Xunwei] i.mx6ull development board porting Debian file system
Managed service network: application architecture evolution in the cloud native Era
[today in history] July 4: the first e-book came out; The inventor of magnetic stripe card was born; Palm computer pioneer was born
Win11无法将值写入注册表项如何解决?
E-week finance | Q1 the number of active people in the insurance industry was 86.8867 million, and the licenses of 19 Payment institutions were cancelled
输入的查询SQL语句,是如何执行的?
Jiuqi ny8b062d MCU specification /datasheet
Delete the characters with the least number of occurrences in the string [JS, map sorting, regular]
[graduation season] green ant new fermented grains wine, red mud small stove. If it snows late, can you drink a cup?
Flet教程之 07 PopupMenuButton基础入门(教程含源码)
凌云出海记 | 一零跃动&华为云:共助非洲普惠金融服务
Free soldier
华为云云商店首页 Banner 资源位申请
Oracle database, numbers Force 2 decimal places to display-Alibaba Cloud
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
Huawei Nova 10 series supports the application security detection function to build a strong mobile security firewall
Pytoch learning (4)
Detailed explanation of Audi EDI invoice message
Cdga | six principles that data governance has to adhere to
C server log module