每日温度(力扣)单调栈 JAVA
给定一个整数数组 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 <= 10^5
30 <= temperatures[i] <= 100
解题思路:
1、本题需要栈来展缓储存数据,在遍历新数据时判断其是否比前面的数据大,方便进行后续操作
和 下一个更大元素 非常类似。
2、不同点是本题元素有重复!所以无法用map!
朴素代码:
class Solution {public int[] dailyTemperatures(int[] temperatures) {Deque<Integer> stacktmpts = new ArrayDeque<Integer>();Deque<Integer> stackindex = new ArrayDeque<Integer>();int len = temperatures.length;int res[] = new int[len];for(int i = 0; i < len; i ++) {while(!stacktmpts.isEmpty() && temperatures[i] > stacktmpts.peekLast()) {res[stackindex.peekLast()] = i - stackindex.pollLast();stacktmpts.pollLast();}stacktmpts.add(temperatures[i]);stackindex.add(i);}while(!stackindex.isEmpty()) res[stackindex.pollLast()] = 0;return res;}
}

比较笨用两个栈分别存储下标和值
值得注意的是数组中下标和值是一对一的关系,所以理论上只存储下标即可
优化代码:
class Solution {public int[] dailyTemperatures(int[] temperatures) {Deque<Integer> stack = new ArrayDeque<Integer>();int len = temperatures.length;int res[] = new int[len];for(int i = 0; i < len; i ++) {while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peekLast()]) {res[stack.peekLast()] = i - stack.pollLast();}stack.add(i);}while(!stack.isEmpty()) res[stack.pollLast()] = 0;return res;}
}

代码:
class Solution {public int[] dailyTemperatures(int[] temperatures) {int length = temperatures.length;int[] ans = new int[length];Deque<Integer> stack = new LinkedList<Integer>();for (int i = 0; i < length; i++) {while (!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) {int prevIndex = stack.pop();ans[prevIndex] = i - prevIndex;}stack.push(i);}return ans;}
}

相关文章:
每日温度(力扣)单调栈 JAVA
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatur…...
博客项目(Spring Boot)
1.需求分析 注册功能(添加用户操纵)登录功能(查询操作)我的文章列表页(查询我的文章|文章修改|文章详情|文章删除)博客编辑页(添加文章操作)所有人博客列表(带分页功能)…...
修改Jenkins存储目录
注意:在Jenkins运行时是不能更改的. 请先将Jenkins停止运行。 1、windows环境下更改JENKINS的主目录 Windows环境中,Jenkins主目录默认在C:Documents and SettingsAAA.jenkins 。可以通过设置环境变量来修改,例如: JENKINS_HOME…...
数据结构【第4章】——栈与队列
队列是只允许在一端进行插入操作、而在另-端进行删除操作的线性表。 栈 栈与队列:栈是限定仅在表尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)&…...
android webview 显示灰度网页
要在WebView中显示网页灰度显示,您可以通过以下步骤操作: 在您的布局文件中添加WebView组件: <WebViewandroid:id"id/webview"android:layout_width"match_parent"android:layout_height"match_parent" /…...
Linux操作系统的基础使用技能的训练大纲(超级详细版本适合于初学者)
RHCE红帽认证工程师课程对应考试课 程 纲 要 第一部分 网络基础 RH033RH302 Linux基础: 1) 在bashshell命令行模式下运行基本的Linux命令 2) 从命令行及GNOME界面启动应用程序 3) 使用及配置Xwindow系统及GNOME桌面环境 4) 使用GNOME GUI应用程序完成一般的工作 5) 了解Linu…...
【变形金刚02】注意机制以及BERT 和 GPT
一、说明 我已经解释了什么是注意力机制,以及与转换器相关的一些重要关键字和块,例如自我注意、查询、键和值以及多头注意力。在这一部分中,我将解释这些注意力块如何帮助创建转换器网络,注意、自我注意、多头注意、蒙面多头注意力…...
一个脚本 专治杂乱
背景 之前不是自己手动搞了一个COS嘛,直接复制粘贴图片,上传到后端的服务器,返回一个可访问的地址。我在哔哩哔哩上也分享过这样的一期视频。 今天偶尔上服务器一看,我靠,我的文件真的乱! 这还得了了&…...
springboot 基础
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 SpringBoot JavaEE 简介 JavaEE的局限性: 1、过于复杂,JavaEE正对的是复杂的分布式企业应用,然而现实…...
web集群学习:基于nginx的反向代理和负载均衡
目录 一,反向代理 1,环境准备 2,配置代理服务器 3,在物理机上一管理员身份打开文本编辑器,编辑C:\Windows\System32\drivers\etc目录下的hosts文件 4,访问测试 5,查看日志,并记…...
编程小窍门: 一个简单的go mutex的小例子
本期小窍门用到了两个组件 mutex 这个类似其他语言的互斥锁waitGroup 这个类似其他语言的信号量或者java的栅栏锁 示例如下 func TestDoSomething04(t *testing.T) {total : 0var wg sync.WaitGroup{}var mut sync.Mutex{} for i : 0; i < 5000; i {go func() {wg.Ad…...
【工作记录】mysql中实现分组统计的三种方式
前言 实际工作中对范围分组统计的需求还是相对普遍的,本文记录下在mysql中通过函数和sql完成分组统计的实现过程。 数据及期望 比如我们获取到了豆瓣电影top250,现在想知道各个分数段的电影总数. 表数据如下: 期望结果: 实现方案 主要思路是根据s…...
马来西亚的区块链和NFT市场调研
马来西亚的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度:联邦议会制 语言文字: 马来语 民族: 69.4%原住民(土著),23.2%…...
[保研/考研机试] KY109 Zero-complexity Transposition 上海交通大学复试上机题 C++实现
描述: You are given a sequence of integer numbers. Zero-complexity transposition of the sequence is the reverse of this sequence. Your task is to write a program that prints zero-complexity transposition of the given sequence. 输入描述…...
Linux零基础快速入门到精通
一、操作系统概述 二、初始Linux Linux的诞生 Linux内核 Linux发行版 小结 三、虚拟机 认识虚拟机 虚拟化软件及安装 VMware Workstation 17 Pro安装教程https://blog.csdn.net/weixin_62332711/article/details/128695978 远程连接Linux系统 小结 扩展-虚拟机快照 …...
ARM02汇编指令
文章目录 一、keil软件介绍1.1 创建工程1.2 解析start.s文件(重点)1.3 乱码解决1.4 更换背景颜色1.5 C语言内存分布1.6 解析map.lds文件(重点)1.7 常见错误信息1.8 仿真 二、汇编三种符号2.1 汇编指令2.2 伪指令2.3 伪操作 三、汇编指令格式3.1 格式3.2 注意事项 四、数据操作指…...
从初学者到专家:Java方法的完整指南
目录 一.方法的概念及使用 1.1什么是方法 1.2方法的定义 1.3方法的调用 1.4实参和形参的关系 1.5没有返回值的方法 1.6方法的意义 二.方法重载 2.1方法重载的实现 2.2方法重载的意义 2.3方法签名 一.方法的概念及使用 1.1什么是方法 方法就是一个代码片段. 类似于 …...
【生成式AI】ProlificDreamer论文阅读
ProlificDreamer 论文阅读 Project指路:https://ml.cs.tsinghua.edu.cn/prolificdreamer/ 论文简介:截止2023/8/10,text-to-3D的baseline SOTA,提出了VSD优化方法 前置芝士:text-to-3D任务简介 text-to-3D Problem text-to-3D…...
C++元编程——模拟javascript异步执行
javascript有一个期约调用,就是利用内部的一种协程机制实现的类似并行的操作。以下是用ChatGPT搞出来的一块演示代码: // 异步任务 function asyncTask() {return new Promise((resolve, reject) > {setTimeout(() > {const randomNumber Math.f…...
【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL
【JavaEE】MyBatis框架要点总结(3) 文章目录 【JavaEE】MyBatis框架要点总结(3)1. 多表查询1.1 映射表resultMap1.2 只有部分属性跨表查询1.2.1 依照常规去写代码1.2.2 用标签去实现接口 1.3 分多步的解决方案1.4 与多线程的结合 …...
基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发,文复现。 MATLAB(工...
基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发,文复现。 MATLAB(工程项目线上支持)自动泊车这活儿看着简单,实际操作起来全是坑。今天咱们就掰开揉碎了聊聊怎么用EKF和MPC这对黄金搭档搞定车位里的毫米…...
YOLOv8在智慧零售场景的应用:顾客与商品检测案例
YOLOv8在智慧零售场景的应用:顾客与商品检测案例 1. 引言:智慧零售的“眼睛”难题 想象一下,你是一家大型超市的经理。每天,你面对着成千上万的顾客和琳琅满目的商品。你想知道:哪个区域的顾客停留时间最长ÿ…...
Mojo模块如何无缝注入PyTorch训练循环:从Cython替代到JIT热重载的完整链路(仅限内测版工具链公开)
第一章:Mojo模块如何无缝注入PyTorch训练循环:从Cython替代到JIT热重载的完整链路(仅限内测版工具链公开)Mojo模块通过原生ABI兼容层与PyTorch C前端深度对齐,无需修改torch.compile()调用栈即可嵌入训练循环。其核心机…...
使用 Python 将 Excel 数据批量导入到数据库中(SQLite)
一、应用场景与方案优势适用场景企业 Excel 报表数据迁移至数据库持久化存储;自动化办公:定期将 Excel 导出数据同步到数据库;轻量级数据中台:多 Excel 文件整合入库,方便后续查询分析;4.测试数据构造&…...
IDimager Products Photo Supreme
链接:https://pan.quark.cn/s/ef9a346f6ac6IDimager Products Photo Supreme图像管理是一非常实用的图片管理应用程序,用户可以通过它来收集自己喜欢的图片,分类处理图片,以后想找图片就会更方便快捷一些,需要的可以来…...
EnCase vs FTK vs 取证大师:三大取证工具实战横评与选型指南(2024版)
EnCase vs FTK vs 取证大师:2024年电子取证工具深度横评与实战选型指南 当一起涉及企业数据泄露的案件摆在面前时,取证专家小李面对着三台装载不同软件的设备犹豫不决——EnCase的专业深度、FTK的全面覆盖,还是取证大师的本土化优势…...
VMD 1.9.4实战:如何高效查看蛋白质-配体分子动力学模拟轨迹(附帧数优化技巧)
VMD 1.9.4实战:如何高效查看蛋白质-配体分子动力学模拟轨迹(附帧数优化技巧) 分子动力学模拟已成为研究蛋白质-配体相互作用的重要工具,而可视化分析则是理解模拟结果的关键环节。Visual Molecular Dynamics(VMD&#…...
doT.js测试终极指南:如何编写高质量的模板测试用例
doT.js测试终极指南:如何编写高质量的模板测试用例 【免费下载链接】doT The fastest concise javascript template engine for nodejs and browsers. Partials, custom delimiters and more. 项目地址: https://gitcode.com/gh_mirrors/do/doT doT.js是No…...
测试左移与右移:不仅仅是工作环节的变化
从被动执行到主动防御的质变传统瀑布模型中,测试常被压缩在开发周期末端,被动等待提测、疲于缺陷修复。而测试左移(Shift-Left)与右移(Shift-Right)的核心理念,是通过重构质量保障体系ÿ…...
精华贴分享|【没什么用系列】【百帖纪念】量化让我越来越觉得:我和 AI,其实都在被同一种机制训练
本文来源于量化小论坛策略分享会板块精华帖,作者为PlumeSoft,发布于2026年3月18日。以下为精华帖正文:声明最近几个月在疯狂使用AI,越用越有感慨。打不过就加入,这个帖子是由我构思,ChatGPT主笔,…...
