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

LeetCode 单调栈 739. 每日温度

739. 每日温度

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


题解

根据题意,我们要去寻找下一个更高温度的位置
如果后面没有更高的用 0 表示

不难发现,所有答案为 0 的数据合并到一起是递减
因为是 0 的数据其后面都没有比它更大的

那么我们就可以去维护一个单调递减的单调栈
期间维护弹出的数据都是答案不为 0 的,弹出的同时可以计算它们的答案
因为要计算数据之间的位置关系,单调栈内记录数据的下标

单调递减单调栈记为 arr
遍历 temperatures 数组,将其加入到栈中并维护栈的单调性
因为栈要保持单调递减,期间弹出的数据都是更小的
那么这些数据的答案就是它们的下标之差
记录这些答案

一次遍历结束后所有答案都求出了(栈中最后剩下的都是0)


代码如下↓

class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n=temperatures.size();vector<int> arr;vector<int> res(n);for(int i=0;i<n;i++){while(arr.empty()==false && temperatures[i]>temperatures[arr.back()]){res[arr.back()]=i-arr.back();arr.pop_back();}arr.push_back(i);}return res;}
};

文章转载自:

http://VYQPWGo4.yxmgq.cn
http://sbfSYElm.yxmgq.cn
http://oCdxqBHK.yxmgq.cn
http://7jcqzuCR.yxmgq.cn
http://zoRJrGzr.yxmgq.cn
http://9TqLQ3x4.yxmgq.cn
http://7xFUqM00.yxmgq.cn
http://A3C4T9z6.yxmgq.cn
http://XFTWkTfw.yxmgq.cn
http://E4CDEBw8.yxmgq.cn
http://AJHccufr.yxmgq.cn
http://B5aKusJW.yxmgq.cn
http://DceXL3vU.yxmgq.cn
http://u4QH4lNS.yxmgq.cn
http://fVZG1BXI.yxmgq.cn
http://5xr56mNc.yxmgq.cn
http://dfTO3Tvs.yxmgq.cn
http://8JLhW6N2.yxmgq.cn
http://FZ6gBiGm.yxmgq.cn
http://6rckcc9g.yxmgq.cn
http://tasc1toZ.yxmgq.cn
http://Wbs5fyDn.yxmgq.cn
http://3yEPqIiM.yxmgq.cn
http://NWj9XJE4.yxmgq.cn
http://YkduU7CN.yxmgq.cn
http://cVXGlLhu.yxmgq.cn
http://GpfVJNhP.yxmgq.cn
http://YP9JqzQN.yxmgq.cn
http://y3VloUnP.yxmgq.cn
http://inN0IiSQ.yxmgq.cn
http://www.dtcms.com/a/374806.html

相关文章:

  • Spark面试题及详细答案100道(71-80)-- 配置与部署
  • UDP特点及报文结构
  • ollama离线部署加载Qwen3-0.6b模型
  • 零基础12周精通Linux学习计划
  • Linux Shell 条件测试与 if 语句全解析
  • C语言内存精讲系列(九):深化详述 int 3(附录:int3 调试关键工具与实战案例)
  • 案例开发 - 日程管理 - 第六期
  • TCP 三次握手、四次挥手
  • 问题排查:之前运行正常的系统,突然批量接口报 404
  • 【Java实战㊱】Spring Boot邂逅Redis:缓存加速的奇妙之旅
  • Spring Cache 多租户缓存隔离解决方案实践
  • Mybatis-12 第三方缓存-EhCache
  • 【C++】特别的程序错误处理方式——异常机制
  • 嵌入式设备上mqtt库的使用
  • 【Linux基础知识系列:第一百二十六篇】使用dd命令进行磁盘复制
  • 从零到一使用Linux+Nginx+MySQL+PHP搭建的Web网站服务器架构环境——LNMP(上)
  • 使用虚拟机Ubuntu搭建mosquito服务器 使esp32、上位机通信
  • 云计算技术栈
  • 国产时序数据库选型指南-从大数据视角看透的价值
  • 东京本社招聘 | 财务负责人 多个日本IT岗位(Java/C++/Python/AWS 等),IT营业同步招募
  • AWS ALB 详解:智能流量调度器
  • Django REST框架:ModelViewSet全面解析
  • 基于Centos7.9搭建svn服务端
  • PyTorch 和nn.Conv2d详解
  • pytorch基本运算-分离计算
  • 基于容器化云原生的 MySQL 及中间件高可用自动化集群项目
  • “图观”端渲染场景编辑器
  • 构建分布式京东商品数据采集系统:基于 API 的微服务实现方案
  • HTML5点击转圈圈 | 深入了解HTML5技术中的动态效果与用户交互设计
  • springboot rabbitmq 延时队列消息确认收货订单已完成