当前位置:网站首页>One question per day (2022-07-02) - Minimum refueling times
One question per day (2022-07-02) - Minimum refueling times
2022-07-04 19:11:00 【Fill your head with water】
List of articles
871. Minimum refueling times
Problem description :
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 .
Their thinking :
Let's not understand it as a gas station , It's not a gas station on the road , But barrels of oil , Every time I pass , Just take the oil , In order to ensure the minimum refueling times , When the oil is not enough, we take the largest barrel of oil and add , So if you run out of oil , Then it won't arrive
Simply put, it's a straight line , From start to end , Distance from starting pointstation[i][0]
Each location has a capacity ofstation[i][1]
Gasoline barrel , If you can reach the end, returnMinimum refueling times
, Otherwise return to-1
;
Answer key :
func minRefuelStops(target int, startFuel int, stations [][]int) int {
// If the oil quantity in the initial state can reach , return 0
if target <= startFuel {
return 0
}
remainOil := startFuel // The rest of the gasoline
pos := make([]int, 0) // The oil bucket on your body
visited := make(map[int]bool) // Whether the oil drum at this position has been picked up , If it has been picked up , Just ignore it , Otherwise, take it with you .
ans := 0 // Refueling times
for {
// If there is no oil
if target > remainOil {
// Traverse the oil bucket on the road , Pick up passing oil barrels
for _, distance := range stations {
// Current oil volume You can pass the oil bucket you brought also I haven't brought this oil bucket before
if remainOil >= distance[0] && visited[distance[0]] != true {
// The oil bucket with the mark on your body
visited[distance[0]] = true
pos = append(pos, distance[1])
}
}
// because When we get here signify target > remainOil
// len(pos) == 0: At this time, if there is no oil bucket to pick up on the road
// Represents the end of the journey , The destination cannot be reached .
if len(pos) == 0 {
return -1
}
sort.Ints(pos)
remainOil = remainOil + pos[len(pos)-1]
ans++
// This oil bucket has been used Just throw it away
pos = pos[:len(pos)-1]
} else {
return ans
}
}
}
Submit results :
边栏推荐
猜你喜欢
随机推荐
[release] a tool for testing WebService and database connection - dbtest v1.0
vbs或vbe如何修改图标
技术分享 | 接口测试价值与体系
使用FTP
利用策略模式优化if代码【策略模式】
MXNet对GoogLeNet的实现(并行连结网络)
Nature microbiology | viral genomes in six deep-sea sediments that can infect Archaea asgardii
一种将Tree-LSTM的强化学习用于连接顺序选择的方法
其他InterSystems %Net工具
Deleting nodes in binary search tree
2022养生展,健康展,北京大健康展,健康产业展11月举办
Torchdrug tutorial
Li Chi's work and life summary in June 2022
Send and receive IBM WebSphere MQ messages
Go微服务(二)——Protobuf详细入门
Wireshark packet capturing TLS protocol bar displays version inconsistency
Scala基础教程--18--集合(二)
字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验
repeat_P1002 [NOIP2002 普及组] 过河卒_dp
What types of Thawte wildcard SSL certificates provide