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)。最坏情况下(温度严格递减),栈存储所有索引。
相关推荐
霸道流氓气质2 分钟前
Spring AI Alibaba Skills 完整实战:从零构建智能会议助手
java·人工智能·spring
一条大祥脚12 分钟前
ABC460贪心|多源BFS|数论|计数|线段树|树的直径
算法·宽度优先
极客先躯13 分钟前
高级java每日一道面试题-2026年02月04日-实战篇[Docker]-如何在容器之间共享数据?
java·运维·网络·docker·容器·自动化·高级面试题
真实的菜13 分钟前
微服务架构痛点
java·微服务·架构
小楊不秃头14 分钟前
Spring:Bean的存储
java·spring·bean
西凉的悲伤15 分钟前
多线程彻底掌握 CompletableFuture:从入门到项目实战
java·多线程·future·completable·异步
用户2986985301415 分钟前
Java 中的 HTML 解析:从文件读取、URL 抓取到数据提取
java·后端
plainGeekDev15 分钟前
ContentProvider → Room + Repository
android·java·kotlin
plainGeekDev20 分钟前
SQLite 手动升级 → Room Migration
android·java·kotlin
小欣加油22 分钟前
leetcode121买卖股票的最佳时机
数据结构·c++·算法·leetcode·职场和发展