当前位置:网站首页>剑指 Offer II 038. 每日温度
剑指 Offer II 038. 每日温度
2022-07-04 05:46:00 【小白码上飞】
概要
使用栈,遍历数组,比较当前数字是否比栈顶元素大。大则出栈处理,直到栈空或者当前数字小于栈顶数字时,将当前数字入栈。
题目
请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。
链接:https://leetcode.cn/problems/iIQa4I
思路
其实和行星碰撞的很像。
我们用一个栈来保存数组中每个元素的下标,从做开始遍历数组。
- 如果栈为空,则入栈。
- 如果栈不为空,比较栈顶和当前元素的大小
- 如果当前元素大,则用当前元素下标和栈顶下标相减,得到栈顶元素“需要等待的天数”。之后再继续和栈里的元素比较大小。
- 如果当前元素小,则入栈。
这样始终让栈顶的元素是最小的,一旦有更大值出现,就把栈中比他小的值都处理掉。
解法:单调栈
代码
public int[] dailyTemperatures2(int[] temperatures) {
int[] result = new int[temperatures.length];
Deque<Integer> stack = new ArrayDeque<>();
for (int i = 0; i < temperatures.length; i++) {
if (stack.isEmpty()) {
stack.push(i);
continue;
}
int current = temperatures[i];
while (!stack.isEmpty() && current > temperatures[stack.peek()]) {
int index = stack.pop();
result[index] = i - index;
}
stack.push(i);
}
// 处理观测不到高温的日子
while (!stack.isEmpty()) {
result[stack.pop()] = 0;
}
return result;
}
执行结果
这里注意,直接使用了Deque来代替Stack,因为Stack的效率实在太低了……
边栏推荐
- LC周赛300
- Introduction to AMBA
- 724. Find the central subscript of the array
- transformer坑了多少算力
- 谷歌 Chrome 浏览器将支持选取文字翻译功能
- [MySQL practice of massive data with high concurrency, high performance and high availability -8] - transaction isolation mechanism of InnoDB
- 冲击继电器JC-7/11/DC110V
- 1.1 history of Statistics
- A little understanding of GSLB (global server load balance) technology
- left_ and_ right_ Net interpretable design
猜你喜欢
[wechat applet] template and configuration (wxml, wxss, global and page configuration, network data request)
2022 R2 mobile pressure vessel filling retraining question bank and answers
How to configure static IP for Kali virtual machine
Introduction to AMBA
LayoutManager布局管理器:FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout、BoxLayout
Canoe panel learning video
谷歌 Chrome 浏览器将支持选取文字翻译功能
[QT] create mycombobox click event
VB.net GIF(制作、拆解——优化代码,类库——5)
Solar insect killing system based on single chip microcomputer
随机推荐
Use of hutool Pinyin tool
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 锁机制 分析
1480. Dynamic sum of one-dimensional array
724. 寻找数组的中心下标
js如何将秒转换成时分秒显示
Viewing and using binary log of MySQL
检漏继电器JY82-2P
Solar insect killing system based on single chip microcomputer
Google Chrome browser will support the function of selecting text translation
Ping port artifact psping
Introduction to AMBA
Gridview出现滚动条,组件冲突,如何解决
复合非线性反馈控制(二)
How to solve the component conflicts caused by scrollbars in GridView
1480. 一维数组的动态和
BUU-Reverse-easyre
px em rem的区别
Excel 比较日器
A little understanding of GSLB (global server load balance) technology
Descriptive analysis of data distribution characteristics (data exploration)