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

算法题-25

给定一个整数数组 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]

拿到这道题最容易想到的对每一天往后找:
for i:
for j = i+1 → n:
找第一个 > temperatures[i]
时间复杂度O(n²),数据量过大就会直接爆炸

但是核心问题是我们什么时候才能知道某一天的答案呢,只有后面的数才能决定前面的答案,这意味需要回头更新,所以需要栈。

我们拿示例1作为例子

说明:stack:存的是「下标(温度)」,操作:当前发生了什么,res:当前答案状态

i当前温度操作说明stack(下标→温度)res
--初始化[][0,0,0,0,0,0,0,0]
073栈空,入栈[0→73][0,0,0,0,0,0,0,0]
17474>73,弹0,res[0]=1[][1,0,0,0,0,0,0,0]
174入栈1[1→74][1,0,0,0,0,0,0,0]
27575>74,弹1,res[1]=1[][1,1,0,0,0,0,0,0]
275入栈2[2→75][1,1,0,0,0,0,0,0]
37171<75,入栈[2→75,3→71][1,1,0,0,0,0,0,0]
46969<71,入栈[2→75,3→71,4→69][1,1,0,0,0,0,0,0]
57272>69,弹4,res[4]=1[2→75,3→71][1,1,0,0,1,0,0,0]
57272>71,弹3,res[3]=2[2→75][1,1,0,2,1,0,0,0]
57272<75,停止弹栈并入栈[2→75,5→72][1,1,0,2,1,0,0,0]
67676>72,弹5,res[5]=1[2→75][1,1,0,2,1,1,0,0]
67676>75,弹2,res[2]=4[][1,1,4,2,1,1,0,0]
676入栈6[6→76][1,1,4,2,1,1,0,0]
77373<76,入栈[6→76,7→73][1,1,4,2,1,1,0,0]
结束-栈剩元素无更高温度[6,7][1,1,4,2,1,1,0,0]

观察表格会发现:栈里永远保持温度递减75,71,69,当更大温度出现:72 或 76,就会:连续弹栈 + 批量结算

var dailyTemperatures = function(temperatures) { const n = temperatures.length const res = new Array(n).fill(0) const stack = [] // 存下标 for(let i = 0; i < n; i++){ // 当前温度更高 → 结算之前的 while( stack.length && temperatures[i] > temperatures[stack[stack.length - 1]] ){ const prevIndex = stack.pop() res[prevIndex] = i - prevIndex } stack.push(i) } return res };

核心思想就是使用单调递减栈保存尚未找到更高温度的下标,当遇到更高温度时,依次弹出并计算等待天数。

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

相关文章:

  • 基于flask的计件工人工资管理系统-vue pycharm django
  • React系列-1
  • 探索.NET Core 外卖订餐系统:初学者的进阶之旅
  • 2026年纯手写论文居然AI率60%?3个原因和解决办法 - 还在做实验的师兄
  • 算法题-24
  • 教学设备怎么选?这5家四川本土品牌兼顾合规、性价比与售后 - 深度智识库
  • 基于flask的健身助手系统 教练预约系统-vue pycharm django
  • 基于flask的河南庙会文化艺术展示与定制-vue pycharm django
  • linux进程和端口相关命令
  • 全网热议!2026年口碑好的抖音直播代运营企业推荐榜单 - 睿易优选
  • 基于flask 的人工智能研讨社区系统-vue pycharm django
  • 金属制品企业哪家强?政企采购必看的Top5优质厂家推荐 - 深度智识库
  • 为什么比话降AI敢承诺不达标退款?背后的技术逻辑 - 还在做实验的师兄
  • 2026年高校论文AI率标准解读:本科硕士博士各是多少 - 还在做实验的师兄
  • 基于flask 的学生网上选课系统的设计-vue pycharm django
  • 2026年水泥管钢筋笼绕筋机/滚焊机/水泥管绕筋机厂家推荐:青州市诚意重工机械有限公司全系供应 - 品牌推荐官
  • Win10/11访问共享提示“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问”(已解决)
  • 留学中介TOP10 文书逻辑哪家强: 招生官视角看这就懂了 - 博客湾
  • 比话降AI和学术猹哪个好?知网实测数据全面对比 - 还在做实验的师兄
  • OpenCSG月度更新2026.2
  • 比话降AI批量处理教程:多篇论文同时降AI怎么操作 - 还在做实验的师兄
  • 金属制品哪家好?西南地区政企批量采购避坑指南与Top5高性价比厂家推荐 - 深度智识库
  • 2026年水泵/新风/电气/高低压/恒压供水/PLC控制柜厂家推荐:青岛乐控电气自动化技术有限公司 - 品牌推荐官
  • 2026年家用/大吸力/节能油烟机推荐:德国罗西欧电气集团,全品类吸油烟机解决方案 - 品牌推荐官
  • 商汤正式进入MSCI中国指数,商汤入选意味着什么?
  • 四川教学设备选哪家?这5家本土企业凭实力霸榜 - 深度智识库
  • 2026年儿童近视防控专业推荐:至美上品视光,离焦镜/防控眼镜/青少年近视防控方案全解析 - 品牌推荐官
  • 必看!2026年青岛环保无纺布源头厂家、医用无纺布源头厂家精选! - 睿易优选
  • 2026年油烟机品牌推荐:健康厨电品牌大吸力/油烟分离/家用抽油烟机全系产品解析 - 品牌推荐官
  • 2026年硕士论文AI率超标被退回?紧急补救全流程 - 还在做实验的师兄