剑指 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. 最小时间差(三解,蛮力,排序,哈希)

Java每日一题——>剑指 Offer II 035. 最小时间差(三解,蛮力,排序,哈希)

Java每日一题——>剑指 Offer II 035. 最小时间差(三解,蛮力,排序,哈希)