当前位置: 首页 > article >正文

【LeetCode】【算法】739. 每日温度

LeetCode 739. 每日温度

题目描述

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。
示例:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

思路

思路:单调栈,栈中存储的是一个数组,包括当日温度和天数

  1. 遍历温度数组,逐步将温度压入栈中;
  2. 当遇到下一个高温(temperatures[i] > deque.peek()[0])时,使用while循环弹出结果,并将当前温度压入数组

代码

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        Deque<Integer[]> deque = new ArrayDeque<>();
        int[] result = new int[temperatures.length];
        for (int i = 0; i < temperatures.length; i++) {
            if (!deque.isEmpty() && deque.getLast()[0] < temperatures[i]){ // 说明出现了下一个大温度
                while (!deque.isEmpty() && deque.getLast()[0] < temperatures[i]){
                    Integer[] popElem = deque.removeLast();
                    result[popElem[1]] = i - popElem[1];
                }
            }
            deque.addLast(new Integer[]{temperatures[i], i});
        }
        return result;
    }
}

http://www.kler.cn/a/381045.html

相关文章:

  • Harmony项目基础
  • 基于 RNN 的语言模型
  • windows 文件监控 c++ 11及以上版本可用
  • 接口测试(十一)jmeter——断言
  • 力扣最热一百题——验证二叉搜索树
  • 计算机存储单元bit。不同编程语言类型差异。
  • Python面向对象:类和对象的基本操作
  • 在gitlab,把新分支替换成master分支
  • LeetCode 3165.不包含相邻元素的子序列的最大和:单点修改的线段树(动态规划)
  • easyui +vue v-slot 注意事项
  • Grafana+Prometheus监控篇-Nginx
  • C#中,Thread和Task的区别
  • 人工智能基础-opencv-图像处理篇
  • 第二届新生程序设计竞赛热身赛(C语言)
  • File和InputStream,OutputStream
  • JavaEE初阶---网络原理值TCP篇(三)
  • gradle下载的jar包,源码出现Decompiled .class file, bytecode version
  • nginx监控指标有哪些
  • AI开发-三方库-torch-torchvision
  • Redis学习:BigKey、缓存双写一致性更新策略和案例