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

单调栈-每日温度

1、力扣链接

https://leetcode.cn/problems/iIQa4I/description/

2、题目描述

请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 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

3、解题思路

使用单调栈解题

4、解题过程

假设每日气温是一个个柱子。温度越高,柱子越高,从前往后看(平视),长的柱子会挡住短的柱子。我们只能看到更高的柱子。使用单调栈标识我们能看到的柱子。不能看到的会被从栈中移除。 假设数组长度是n
1、站在第n个柱子往后看。没有柱子了,所以最后一个肯定是0
2、站在第 n-1个柱子往后看,如果n-1 柱子更高那么就看不到最后一根柱子,所以ans[n-1] = 0 如果n-1 柱子更矮那么就能到最后一根柱子。他们之间的距离就是 (n-(n-1)) = 1 所以ans[n-1] = 1
3、以此类推

5、复杂度

5.1 时间复杂度:

O(n)

5.2 空间复杂度:

O(n)

6、代码:

      public int[] dailyTemperatures(int[] temperatures) {int len = temperatures.length;int [] ans=new int[temperatures.length];Stack<Integer> stack = new Stack<>();//指针从后往前移动for (int i = len-1; i >=0 ; i--) {// 栈中的元素是 i 到 len-1 中 的元素,如果后面的元素小于当前元素,那么就会被当前元素遮住那么就可以删除被遮住的元素while (!stack.isEmpty()&& temperatures[stack.peek()]<=temperatures[i]){stack.pop();}//如果站为空说明栈内元素都小于当前元素.说明没有更高的气温了返回0if (stack.isEmpty()){ans[i]=0;}else {//找到了比当前更高的气温,计算距离ans[i]=stack.peek()-i;}//记录当前元素所在位置,继续下一轮循环stack.push(i);}return ans;}
http://www.xdnf.cn/news/1342.html

相关文章:

  • 1、AI及LLM基础:OpenAI 开发
  • 手写深拷贝函数
  • 基于RabbitMQ实现订单超时自动处理
  • 服务器编译环境配置及数据接收脚本编写(11)
  • 蓝桥杯 19. 最大比例
  • 【3】CICD持续集成-k8s集群中安装Jenkins-agent(主从架构)
  • 【数据可视化-24】巧克力销售数据的多维度可视化分析
  • 解读大型语言模型:从Transformer架构到模型量化技术
  • 3小时速通Python-Python学习总部署、总预览(一)
  • transformer 解码器和输出部分结构
  • gradle可用的下载地址(免费)
  • Linux 内核中 cgroup 子系统 cpuset 是什么?
  • nodejs模块暴露数据的方式,和引入(导入方式)方式
  • 高级java每日一道面试题-2025年4月21日-基础篇[反射篇]-如何使用反射获取一个类的所有方法?
  • 移动通信运营商对MTU的大小设置需求
  • 【codeforces思维题】前缀和的巧妙应用(2053B)
  • 【AI News | 20250422】每日AI进展
  • 计算机组成原理---总线系统的详细概述
  • HCIP-H12-821 核心知识梳理 (5)
  • 如何修改文件termsrv.dll实现多用户同时远程
  • 一个关于相对速度的假想的故事-4
  • AGI大模型(12):向量检索之关键字搜索
  • 企业战略到数字化落地 —— 第四章 SOP 的概念
  • 几种电气绝缘类型
  • Mininet--node.py源码解析
  • 学习笔记——《Java面向对象程序设计》-抽象和接口
  • 实验1python基本网络应用
  • 为TA开发人员介绍具有最新改进的Kinibi-610a
  • 【Vue3 / TypeScript】 项目兼容低版本浏览器的全面指南
  • 【MySQL】数据库基础