739.每日温度
2026/4/27 23:13:43 网站建设 项目流程

题目:每日温度 点击跳转

文章目录

  • 题目描述
  • 暴力超时
  • 单调栈
    • 核心思路
    • Stack用到的方法
      • 入栈
      • 出栈
      • 看栈顶
      • 是否为空
    • 正确解答

题目描述

暴力超时

classSolution{publicint[]dailyTemperatures(int[]temperatures){int[]answer=newint[temperatures.length];for(inti=0;i<temperatures.length;i++){for(intj=i+1;j<temperatures.length;j++){if(temperatures[j]>temperatures[i]){answer[i]=j-i;//核心break;}}}returnanswer;}}

单调栈

找右边第一个比当前元素大的元素

核心思路

栈里保存的是:还没有找到更高温度的天的下标
当今天的温度 temperatures[i] 比栈顶那天更高时,说明:

今天就是栈顶那天等到的更高温度

当前温度比栈顶那天高 → 说明那天终于等到了更高温度

Stack用到的方法

入栈

stack.push(i)//把下标 i 放进栈里

出栈

stack.pop()//把栈顶元素取出来,并删除

看栈顶

stack.peek()//查看栈顶元素,但不删除

是否为空

stack.isEmpty()//判断栈是不是空的

正确解答

classSolution{publicint[]dailyTemperatures(int[]temperatures){intn=temperatures.length;int[]answer=newint[n];Stack<Integer>stack=newStack<>();//放下标for(inti=0;i<n;i++){while((!stack.isEmpty())&&(temperatures[i]>temperatures[stack.peek()])){intj=stack.pop();answer[j]=i-j;}stack.push(i);}returnanswer;}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询