力扣hot100:每日温度

题目描述:

思路分析(单调栈)

这道题最优解是使用单调栈(Monotonic Stack)。

核心思想:

  • 我们从左到右遍历每一天。
  • 用一个栈来维护一个从栈底到栈顶温度严格递减的索引序列(即栈中保存的是还没有找到更高温度的日子)。
  • 当遇到一个新温度时,如果它比栈顶那天的温度高,说明栈顶那天"等到了"更暖和的一天,就可以弹出栈顶,计算等待天数。
  • 不断弹出,直到栈顶温度不低于当前温度,或者栈为空。
  • 最后把当前天的索引入栈,继续等待未来的更高温度。

为什么是 O(n)?

  • 每个元素最多入栈一次、出栈一次,总操作次数是 O(n),非常高效。

代码:

java 复制代码
class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n=temperatures.length;
        Stack<Integer> stack =new Stack<>();
        int[] res=new int[n];
        for(int i=0;i<n;i++){
            while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()]){
                int a=stack.pop();
                res[a]=i-a;
            }
            stack.push(i);
        }
        res[n-1]=0;
        return res;
    }
}
相关推荐
Yfhonier13 分钟前
6440. 极大连通图个数(DFS)
数据结构·算法·深度优先
测试199819 分钟前
软件测试面试八股文【2026最新版】
自动化测试·软件测试·功能测试·测试工具·面试·职场和发展·测试用例
玖玥拾24 分钟前
LeetCode 1 两数之和
算法·leetcode·职场和发展
Cccp.12325 分钟前
【leetcode】(一)认识复杂度和简单排序算法
算法·排序算法
boheweidexiatian33 分钟前
如何系统性地准备面试,把通过率提到最高?
面试·职场和发展·求职招聘
旖旎夜光34 分钟前
LeetCode 974:和可被 K 整除的子数组(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
无限码力38 分钟前
拼多多笔试真题 2026-8-30【唯一入栈出库序列】
算法·pdd笔试真题·拼多多春招笔试真题·拼多多秋招笔试真题·拼多多笔试真题题解·拼多多最新笔试题库
lvwangshu38 分钟前
分治:序列分治(CDQ)与点分治
算法·分治
无限码力43 分钟前
2026-8-30拼多多笔试真题-哪个查阅窗能留空(C++/Py/Java /Js/Go)
算法·pdd·pdd笔试真题·拼多多春招笔试真题·拼多多秋招笔试真题·拼多多笔试真题题解·拼多多笔试题解