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

【LeetCode 热题100】739:每日温度(详细解析)(Go语言版)

🌡️ LeetCode 739:每日温度(详解 + 单调栈 + 多种思路对比)

📌 题目描述

给定一个整数数组 temperatures,表示每天的温度,返回一个数组 answer,其中 answer[i] 是指在第 i 天之后,才会有更高温度的天数。如果之后没有更高的温度,answer[i] = 0

🔍 示例:

输入:temperatures = [73,74,75,71,69,72,76,73]
输出:[1,1,4,2,1,1,0,0]

💡 解题思路

这是一道经典的 单调栈应用题,本质是要寻找「下一个更大的元素」,具体分析如下:

✅ 方法一:单调递减栈(推荐,最优解法)

  • 栈中存的是 索引(index),栈顶元素对应的温度总是 比当前元素大或相等
  • 遍历过程中,一旦遇到比栈顶索引所指温度高的当前值,就开始出栈,并计算天数差值;
  • 最终形成一个从左到右的高温等待天数列表。

🔄 模拟过程(以 [73,74,75,71,69,72,76,73] 为例):

  • 遇到 74 > 73,计算 1 天;
  • 遇到 75 > 74,计算 1 天;
  • 后面直到遇到 76 > 72,再更新;
  • 这样一步步更新每个位置等到更高温度的天数。

💻 Go 实现代码

func dailyTemperatures(temperatures []int) []int {n := len(temperatures)answer := make([]int, n)stack := []int{} // 存索引for i := 0; i < n; i++ {for len(stack) > 0 && temperatures[i] > temperatures[stack[len(stack)-1]] {idx := stack[len(stack)-1]stack = stack[:len(stack)-1]answer[idx] = i - idx}stack = append(stack, i)}return answer
}

⏱️ 复杂度分析

项目复杂度
时间复杂度$O(n)$ (每个元素最多被入栈出栈一次)
空间复杂度$O(n)$ (栈和输出数组占用空间)

🔄 方法二:暴力双重循环(超时 or 不推荐)

  • 对于每一个位置,向后扫描直到找到更高温度;
  • 时间复杂度为 $O(n^2)$,无法通过大规模数据。

✅ 总结

解法时间复杂度空间复杂度是否推荐
单调栈$O(n)$$O(n)$✅✅✅ 强烈推荐
暴力解法$O(n^2)$$O(1)$

🧠 思维拓展

  • 单调栈结构可用于「下一个更大元素」「区间最大值」等问题;

  • 同类题目推荐:

    • 496. 下一个更大元素 I
    • 503. 下一个更大元素 II
    • 84. 柱状图中最大的矩形

💡 如果你觉得这篇文章对你有帮助,欢迎 点赞 👍 收藏 ⭐ 关注 🧡,后续我会继续更新 LeetCode 高质量题解!

相关文章:

  • SpringBoot3+AI
  • 【android bluetooth 协议分析 01】【HCI 层介绍 3】【NUMBER_OF_COMPLETED_PACKETS 事件介绍】
  • Flink CEP是什么?
  • 系统架构设计(十四):解释器风格
  • 开始学习做游戏,就现在
  • 写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果
  • 【数据结构】2-3-2 单链表的插入删除
  • JSON Schema 高效校验 JSON 数据格式
  • 翻到了一段2005年写的关于需求的文字
  • ⭐️白嫖的阿里云认证⭐️ 第二弹【课时1:提示词(Prompt)技巧】for 「大模型Clouder认证:利用大模型提升内容生产能力」
  • 软件工具:批量图片区域识别+重命名文件的方法,发票识别和区域选择方法参考,基于阿里云实现
  • HarmonyOS 与 OpenHarmony:同根而不同途
  • Kubernetes控制平面组件:Kubelet详解(六):pod sandbox(pause)容器
  • Kubernetes控制平面组件:Kubelet详解(五):切换docker运行时为containerd
  • 【提高+/省选−】洛谷P1495 —— 【模板】中国剩余定理(CRT)/ 曹冲养猪
  • 游戏引擎学习第291天:跳跃的怪物与占据的树木
  • Linux搜索
  • 【ubuntu24.04】pycharm 死机结束进程
  • 正则表达式 - 语法
  • Trae IDE和VSCode Trae插件初探
  • 广东茂名高州市山体滑坡已致3死1失联,搜救仍在继续
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了
  • 特朗普指控FBI前局长“暗示刺杀总统”,“8647”藏着什么玄机?
  • 南宁一学校发生伤害案件,警方通报:嫌疑人死亡,2人受伤
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 四川内江警方通报一起持刀伤人致死案:因车辆停放引起,嫌犯被抓获