leetcode 739. 每日温度

题目

核心思路(单调递减栈)

栈的作用 :存储温度数组的索引,且栈内索引对应的温度值保持单调递减。
遍历逻辑

  • 遍历每个温度时,若当前温度 > 栈顶索引的温度 → 栈顶索引的 "下一个更高温度" 就是当前索引,计算距离并弹出栈顶。
  • 重复上述过程直到栈为空 / 当前温度 ≤ 栈顶温度,再将当前索引压入栈。
  • 未找到更高温度的元素:栈中剩余索引(右侧无更高温度),结果置 0。

Java代码实现

java 复制代码
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        Deque<Integer> stack = new LinkedList<>();
        int n = temperatures.length;
        int[] ans = new int[n];

        for (int i = 0; i < n; i++) {
            int t = temperatures[i];
            while (!stack.isEmpty() && t > temperatures[stack.peek()]) {
                int idx = stack.pop();
                ans[idx] = i - idx;
            }
            stack.push(i);
        }
        return ans;
    }
}

复杂度分析

  • 时间复杂度:O (n)。每个元素仅入栈和出栈一次,总操作次数为 2n。
  • 空间复杂度:O (n)。最坏情况下(温度严格递减),栈存储所有索引。
相关推荐
mifengxing9 分钟前
LeetCode 189 轮转数组|3种解法拆解,从暴力到O(1)原地最优解
数据结构·算法·leetcode
MIngYaaa52020 分钟前
2026暑期牛客多校3 2026-7-24
数据结构·算法·000
2501_9378609431 分钟前
Java 集合底层深度剖析:Map 与 Set、二叉搜索树、哈希表全解
java·数据结构·散列表
cyforkk1 小时前
并发控制与状态安全:Single-Flight 与幂等性的本质区别
java·安全·spring
geats人山人海1 小时前
算法基础第二讲 基础算法下
算法
豆角焖肉1 小时前
MyBatis延迟加载、缓存机制与注解开发
java·spring·mybatis
所愿ღ1 小时前
SSM框架-Spring3
java·开发语言·笔记·spring
java1234_小锋1 小时前
【免费】基于Spark实时交通流量分析与拥堵预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
java·大数据·spark·kafka·实时交通流量分析与拥堵预测
组合缺一1 小时前
Solon 的 10 种 HTTP 服务器:改一行依赖,换一个引擎
java·服务器·网络协议·http·solon
阳明山水1 小时前
销量预测2026下半年:新架构、新基准与新共识
人工智能·深度学习·算法·机器学习·架构