当前位置:网站首页>leetcode 1642. Furthest Building You Can Reach(能到达的最远的建筑)
leetcode 1642. Furthest Building You Can Reach(能到达的最远的建筑)
2022-06-24 07:01:00 【蓝羽飞鸟】
You are given an integer array heights representing the heights of buildings, some bricks, and some ladders.
You start your journey from building 0 and move to the next building by possibly using bricks or ladders.
While moving from building i to building i+1 (0-indexed),
If the current building’s height is greater than or equal to the next building’s height, you do not need a ladder or bricks.
If the current building’s height is less than the next building’s height, you can either use one ladder or (h[i+1] - h[i]) bricks.
Return the furthest building index (0-indexed) you can reach if you use the given ladders and bricks optimally.
Example 1:
Input: heights = [4,2,7,6,9,14,12], bricks = 5, ladders = 1
Output: 4
Explanation: Starting at building 0, you can follow these steps:
- Go to building 1 without using ladders nor bricks since 4 >= 2.
- Go to building 2 using 5 bricks. You must use either bricks or ladders because 2 < 7.
- Go to building 3 without using ladders nor bricks since 7 >= 6.
- Go to building 4 using your only ladder. You must use either bricks or ladders because 6 < 9.
It is impossible to go beyond building 4 because you do not have any more bricks or ladders.
你手上有砖和梯子两种工具,当下一个楼比当前楼更高的时候,就要借助砖或者梯子上去,
选砖的话就需要 高度差 块砖,选梯子的话只需要一个梯子。
问最远能到达第几个建筑,从下标0开始。
思路:
如果高度差很大的话,需要很多块砖,但是只需要一个梯子,
一个直觉的想法就是高度差最大的那几个用梯子,剩下的用砖,就能资源最大化,走得更远。
那显然高度差不是排好序的,也不能排序,毕竟楼就在那里不能移动。
所以有一个想法就是先用砖,砖不够的时候把目前为止最大的高度差的那个地方把砖换成梯子,同时把砖回收回来下次用。
那怎样找到目前为止最大的高度差呢,用最大堆即可。
public int furthestBuilding(int[] heights, int bricks, int ladders) {
int n = heights.length;
if(n == 1) return 0;
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
for(int i = 0; i < n - 1; i++) {
if(heights[i] >= heights[i+1]) continue;
bricks -= heights[i+1] - heights[i];
queue.add(heights[i+1] - heights[i]);
if(bricks < 0) {
bricks += queue.poll();
if(ladders > 0) ladders --;
else return i;
}
}
return n - 1;
}
上面这样写时间效率不高,因为每一步都要把高度差加到queue里
public int furthestBuilding(int[] heights, int bricks, int ladders) {
int n = heights.length;
if(n == 1) return 0;
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
int i;
for(i = 1; i < heights.length; i++) {
int heightDiff = heights[i] - heights[i - 1];
if(heightDiff <= 0) {
continue;
}
if(heightDiff <= bricks) {
bricks -= heightDiff;
queue.offer(heightDiff);
} else if(ladders > 0){
if(!queue.isEmpty() && queue.peek() > heightDiff) {
//有且有必要换时
bricks += queue.poll();
bricks -= heightDiff;
queue.offer(heightDiff);
}
ladders--;
} else {
break;
}
}
return i - 1;
}
边栏推荐
- 【无标题】
- dhcp、tftp基础
- Common CVM transcribes audio using virtual sound card
- 2021-03-11 COMP9021第八节课笔记
- Two methods of QT exporting PDF files
- 2021-03-16 comp9021 class 9 notes
- [real estate opening online house selection, WiFi coverage temporary network] 500 people are connected to WiFi at the same time
- 普通token
- Question 4 - datepicker date selector, disabling two date selectors (start and end dates)
- 2022年流动式起重机司机特种作业证考试题库及在线模拟考试
猜你喜欢

2022年制冷与空调设备运行操作上岗证题库及模拟考试

PAT 1157:校庆

The article takes you to understand the security of Windows operating system and protect your computer from infringement

Question 4 - datepicker date selector, disabling two date selectors (start and end dates)

List of Li Bai's 20 most classic poems
![Fundamentals of 3D mathematics [17] inverse square theorem](/img/59/bef931d96883288766fc94e38e0ace.png)
Fundamentals of 3D mathematics [17] inverse square theorem

ZUCC_编译语言原理与编译_实验08 语法分析 LR 分析

LabVIEW finds prime numbers in an array of n elements

Question 3 - MessageBox pop-up box, modify the default background color

JUC个人简单笔记
随机推荐
13 -- remove invalid parentheses
Win10 cloud, add Vietnamese
Tencent conference API - get rest API & webhook application docking information
根据网络上的视频的m3u8文件通过ffmpeg进行合成视频
Building a static website with eleventy
Fundamentals of 3D mathematics [17] inverse square theorem
AUTO PWN
List of Li Bai's 20 most classic poems
2021-06-24: find the length of the longest non repeating character substring in a string.
Review SGI STL secondary space configurator (internal storage pool) | notes for personal use
Promise usage scenarios
【无标题】
问题4 — DatePicker日期选择器,2个日期选择器(开始、结束日期)的禁用
2021-03-04 comp9021 class 6 notes
05-ubuntu安装mysql8
New technology practice, encapsulating the permission application library step by step with the activity results API
软件过程与项目管理期末复习与重点
WPS的JS宏实现图片正文在同一段落的分离方法
Synthesize video through ffmpeg according to m3u8 file of video on the network
Markdown 实现文内链接跳转