首页 > 其他分享 >【Leetcode 热题 100】739. 每日温度

【Leetcode 热题 100】739. 每日温度

时间:2025-01-11 14:28:59浏览次数:3  
标签:int res 元素 热题 temperatures 栈中 739 100 stack

问题背景

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

数据约束

  • 1 ≤ t e m p e r a t u r e s . l e n g t h ≤ 1 0 5 1 \le temperatures.length \le 10 ^ 5 1≤temperatures.length≤105
  • 30 ≤ t e m p e r a t u r e s [ i ] ≤ 100 30 \le temperatures[i] \le 100 30≤temperatures[i]≤100

解题过程

单调栈模板题,可以大概地抽象为,为数组中每个位置上的元素找到之后第一个大于它的值,直接记住要比用的时候再推导更高效。
有两种思路,从右往左遍历,栈中记录的是所有的候选项,如果出现新加入的元素不小于栈顶的元素,那么栈中的元素应当按序出栈;从左往右遍历,栈中记录的是所有尚未确定结果的位置,如果刚刚访问到的元素满足题目条件,那么记录结果,将栈顶元素出栈,将新的元素入栈。

具体实现

从右往左

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        int[] res = new int[n];
        // 队列和栈都是用双端队列来模拟
        Deque<Integer> stack = new ArrayDeque<>();
        for(int i = n - 1; i >= 0; i--) {
            int cur = temperatures[i];
            // 如果栈非空且当前元素大于栈顶元素,那么栈顶元素依次出栈
            while(!stack.isEmpty() && cur >= temperatures[stack.peek()]) {
                stack.pop();
            }
            if(!stack.isEmpty()) {
                res[i] = stack.peek() - i;
            }
            // 栈中记录的是元素的下标
            stack.push(i);
        }
        return res;
    }
}

从左往右

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        int[] res = new int[n];
        // 队列和栈都是用双端队列来模拟
        Deque<Integer> stack = new ArrayDeque<>();
        for(int i = 0; i < n; i++) {
            int cur = temperatures[i];
            // 如果栈非空且当前元素符合大于栈顶元素这个条件,那么记录结果
            while(!stack.isEmpty() && cur > temperatures[stack.peek()]) {
                int top = stack.pop();
                res[top] = i - top;
            }
            // 栈中记录的是下标
            stack.push(i);
        }
        return res;
    }
}

标签:int,res,元素,热题,temperatures,栈中,739,100,stack
From: https://blog.csdn.net/2401_88859777/article/details/145076975

相关文章

  • Sigrity System SI SerialLink模式进行100base_T1协议仿真分析操作指导-100BaseT1_Rx
    SigritySystemSISerialLink模式进行100base_T1协议仿真分析操作指导-100BaseT1_RxSigritySystemSISerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要......
  • 梦开始的地方:力扣热题100哈希表
    文章目录前言一、哈希表是什么二、力扣解题常见的三种哈希结构(java版本)1.数组2.set(集合)3.map(映射)总结前言在刷力扣100题的征程中,我从哈希相关题目入手,一路探索,收获颇丰。如今,想将自己在这一过程中的思路与感悟进行一番总结,既为记录成长,也希望能给同样在算法之路上......
  • 在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)
    在Safari浏览器中,没有一个专门的快捷键可以将页面恢复到默认的缩放比例。但是,你可以使用以下两种方法快速将页面恢复到100%缩放(也就是默认尺寸):方法一:使用快捷键(最常用)Command(⌘)+0(零)这个快捷键会立即将当前页面的缩放比例重置为100%。这是最常用的方式,......
  • 炸弹 (boom.c)(100分双端递推+分割线优化)
    炸弹(boom.c)时间限制:800ms内存限制:256000KiB进度:57/12406=0.5%题目描述出题助教:Sakiyary验题助教:Corax、XiEn、ErinwithBMQ、runz、MacGuffin、Bob维多利亚的腐烂荒野上出现了 N 个魔物,你和小维需要抓紧时间调配炸弹对付它们。荒野可以视为一张方格图,(x_i......
  • as-v1000视频监控平台导入导出功能,在平台迁移时快速导入设备信息
    目录一、背景说明二、导出操作三、导入操作四、视频播放五、在平台迁移中的应用    1、快速部署    2、减少错误    3、保持连续性六、总结一、背景说明        在视频监控领域,随着技术的不断进步和应用场景的不断拓展,系统升级与......
  • 《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1Tzr9Y3EQ7/目录:1、开源低功耗测试仪2、开源创意万用表,续航100-300小时3、低级编程和优化实现4、资讯(1)兆易创新推出EtherCAT......
  • 【等待优化】sql server CXPACKET 等待 导致 CPU飙高、CPU100%
    From: https://www.cnblogs.com/gered/p/12539368.html目录【1】CXPACKET的基本解决策略【1.1】CXPACKET 解释【1.2】在OLTP上解决CXPACKET的办法——调整并行度【1.3】Data-warehousing/Reportingserver上的CXPACKET【1.4】MixedSystem(OLTP&OLAP)【2】CPU......
  • YASKAWA机械手维修DX100示教器通电无反应
    安川机器人DX100示教器通电无反应可能由多种原因导致,以下是一些常见的原因及对应的解决方法:可能原因电源问题:电源线破损或电源插座接触不良。 硬件故障:示教器内部电路板或元件(如内存条、处理器或显示屏等)损坏。 软件问题:软件发生错误或版本不匹配。 其他故障:如DX100示教器急......
  • ASE100N03-ASEMI中低压N沟道MOS管ASE100N03
    编辑:llASE100N03-ASEMI中低压N沟道MOS管ASE100N03型号:ASE100N03品牌:ASEMI封装:TO-252最大漏源电流:100A漏源击穿电压:30V批号:最新RDS(ON)Max:5.0mΩ引脚数量:3沟道类型:N沟道MOS管芯片尺寸:MIL漏电流:恢复时间:ns芯片材质:封装尺寸:如图特性:中低压MOS管、N沟道MOS管工作结温:-5......
  • 原生的Three.js Cesium.js的 开源案例 已获近1000Star
    纯原生threecesium案例由于前端得发展,three.js和cesium.js越来越被越来越多得前端接触到,由于其学习路线比较复杂,且官网案例覆盖不全,因此在今年我们共同搭建了一个免费得three和cesium案例学习平台,未来将免费逐步的更新案例。主要侧重于开发者的技术交流......