leetCode 739.每日温度

题目

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:

输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

思路:

  • 遍历数组,将下标放进 单调栈,如果比过去几天的温度高,就是结果需要的下标
  • 可以根据下标,得到之前的温度
  • 相差了几天, 需要进行计算,计算后放进结果数组里面。

代码:

    public int[] dailyTemperatures(int[] temperatures) {
        if (temperatures == null) {
            return null;
        }
        Deque<Integer> stack = new LinkedList<>();
        int length = temperatures.length;
        int[] answers = new int[length];
        //思路:遍历数组,将下标放进 单调栈,如果比过去几天的温度高,就是结果需要的下标
        for (int i=0; i< length; i++) {
            //stack.peek() 是之前的下标,可以根据这个下标,得到之前的温度
            //判断是否比过去几天的温度高, 由于要比较过去几天的温度,所以用 while
            while (!stack.isEmpty() &&  temperatures[i] > temperatures[stack.peek()] ) {
                int preIndex = stack.pop();
                //比过往的 温度高,那结果数组下标取 preIndex。这里需要计算相差了几天才是高温。
                answers[preIndex] = i- preIndex;
            }
            //将下标放进栈里
            stack.push(i);
        }

        return answers;


    }

posted on   乐之者v  阅读(3)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-01-04 ElastaticSearch -- es深度分页 searchAfter
2018-01-04 SpringBoot简单理解
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示