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

01 每日温度 单调栈

739. 每日温度

已解答

中等

相关标签

premium lock icon相关企业

提示

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

示例 1:

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

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

示例 3:

输入: temperatures = [30,60,90]
输出: [1,1,0]

提示:

  • 1 <= temperatures.length <= 105
  • 30 <= temperatures[i] <= 100

// 版本一
class Solution {
public:vector<int> dailyTemperatures(vector<int>& T) {// 递增栈stack<int> st;vector<int> result(T.size(), 0);st.push(0);for (int i = 1; i < T.size(); i++) {if (T[i] < T[st.top()]) {                       // 情况一st.push(i);} else if (T[i] == T[st.top()]) {               // 情况二st.push(i);} else {while (!st.empty() && T[i] > T[st.top()]) { // 情况三result[st.top()] = i - st.top();st.pop();}st.push(i);}}return result;}
};

单调栈的适用场景

  • 求当前元素左面或者右面第一个比当前元素大或者小的元素(位置和数值)都适合用单调栈来解决

本题思路( O(n) )

  • 单调栈里面不要存元素,要存下标,直接存元素(要求的是距离,元素还有重复的不行)

  • 如何比较大小

  • 维护单调递增(从栈顶到栈底依次增大)(求的是当前元素的前面或者后面比这个元素大的元素)和单调递减(求的就是当前元素前面或者后面第一个比它小的元素的位置)

  • 单调栈在本题的作用:存放遍历过的元素

    三种情况

  • 当当前元素小于或者等于栈顶元素时,直接加入到栈中(维护的是单调递增)

  • 本题要求是求比当前元素大的元素,而不是大于等于,所以等于时依然直接加入到栈中

  • 若是当前元素大于栈顶元素,栈顶元素收获结果集()并且弹出,然后继续和当前的栈顶元素(原来就在栈里面,栈顶元素后面的那个元素)比较大小,重复操作

http://www.jsqmd.com/news/739005/

相关文章:

  • 快手下载视频去水印方法有哪些?快手视频去水印工具怎么选?2026 实测盘点 - 科技热点发布
  • 终极指南:5分钟快速上手ChineseSubFinder自动化中文字幕下载
  • 如何永久保存微信聊天记录:WeChatMsg完整指南让珍贵对话永不丢失
  • 炉石传说脚本完全指南:5分钟掌握智能自动化对战技巧
  • 暗黑2存档修改器:5分钟学会修改角色装备,告别刷装备烦恼
  • 终极Windows风扇控制指南:告别噪音烦恼的完整解决方案
  • 揭秘自动驾驶数据标注效率瓶颈:5大Python工具对比测试,准确率提升47%的实测方案
  • 如何彻底移除Windows Edge浏览器:EdgeRemover全方位解决方案
  • 国产数据库Python适配不是“换驱动”那么简单:信创环境下线程安全、连接复用、分布式事务的3层架构重构方案(附架构图与压测报告)
  • 别再被PowerShell坑了!IntelliJ IDEA终端运行Maven命令的正确姿势(以-Dmaven.test.skip=true为例)
  • 告别烧录失败!用Vector HexView给Intel Hex文件做地址对齐的保姆级教程
  • 别再只测角度了!用AS5600磁编码器DIY你的桌面小玩意:转速表、舵机闭环控制与无线姿态监测
  • 抖音怎么去水印保存别人的视频?2026 最新抖音去水印保存别人视频方法盘点,官方规定也帮你说清楚 - 科技热点发布
  • 如何在浏览器中优雅地查看Markdown文件:7大实用功能全解析
  • 电脑外接显示器天梯榜 All In One
  • AI应用成本监控利器agentcost-cli:非侵入式API费用追踪与优化实践
  • 扩散模型概念擦除技术与IRECE增强框架解析
  • 告别零散教程:用Frida+Objection玩转Android应用动态分析(实战内存搜索与Hook)
  • 破解代码理解难题:如何用伪代码生成工具提升团队开发效率
  • 如何构建高性能Markdown渲染架构:浏览器扩展的模块化设计实践
  • 将taotoken接入claudecode扩展你的编程助手能力
  • 免费量化投资数据平台:AKShare如何解决你的金融数据难题?
  • 技术实现深度解析:WeChatFerry微信机器人框架的自动化消息处理与多模型集成
  • LoFT框架:参数高效微调解决长尾数据学习难题
  • C++笔记-set和map的使用
  • 5分钟终极指南:如何快速上手Competitive Companion编程竞赛神器
  • DoL-Lyra终极整合包:5分钟打造你的专属游戏美化方案
  • 解放双手,轻松冲层:D3KeyHelper暗黑3鼠标宏工具完全指南
  • PREEMPT_RT 技术实现:rt_mutex
  • 8大主流网盘直链下载助手:告别限速烦恼的终极解决方案