剑指 Offer II 038. 每日温度
Posted 易小顺
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer II 038. 每日温度相关的知识,希望对你有一定的参考价值。
算法记录
LeetCode 题目:
请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。
说明
一、题目
如果气温在这之后都不会升高,请在该位置用 0 来代替。
二、分析
- 暴力求解也可以, 不过作为优秀的程序员肯定追求优美的代码.
- 翻译题目的含义就是说找最近的大于当前点的温度坐标差, 刚好可以用单调栈来套.
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
Stack<Integer> s = new Stack();
int[] ret = new int[temperatures.length];
for(int i = 0; i < temperatures.length; i++) {
while(!s.empty() && temperatures[i] > temperatures[s.peek()]) {
ret[s.peek()] = i - s.peek();
s.pop();
}
s.push(i);
}
return ret;
}
}
总结
熟悉单调栈的方法。
以上是关于剑指 Offer II 038. 每日温度的主要内容,如果未能解决你的问题,请参考以下文章
Java每日一题——>剑指 Offer II 032. 有效的变位词
Java每日一题——>剑指 Offer II 032. 有效的变位词
Java每日一题——>剑指 Offer II 032. 有效的变位词
Java每日一题——>剑指 Offer II 035. 最小时间差(三解,蛮力,排序,哈希)