【单调队列】 239. 滑动窗口最大值
239. 滑动窗口最大值
解题思路
- 计算每一个滑动窗口的最大值 关键在于借助单调队列实现窗口
- 对于单调队列 尾部添加元素 头部删除元素
- 添加元素操作:从尾部开始循环对比 删除比当前元素小的元素
- 获取最大值元素 直接获取头部元素
- 删除元素操作 直接删除头部元素
class Solution {public int[] maxSlidingWindow(int[] nums, int k) {// 借助单调队列 计算每一个滑动窗口的最大值MonotonicQueue window = new MonotonicQueue();// 单调队列窗口List<Integer> res = new ArrayList<>();for(int i = 0; i < nums.length; i++){if(i < k - 1){window.push(nums[i]);// 先把前面k- 1 个元素填满}else{// 窗口开始向前面移动// 移入新的元素window.push(nums[i]);// 因为是单调队列 直接计算最大值res.add(window.max());// 移除最后的元素window.pop(nums[i - k + 1]);}}// 将List 类型转换为int[] 数组 作为返回值int[] arr = new int[res.size()];for(int i = 0; i < res.size(); i++){arr[i] = res.get(i);}return arr;}// 单调队列的实现 尾部添加元素 头部删除元素 那么头部元素是最大值// 维护的单调队列 是需要从尾部到头部的元素 全部单调递增class MonotonicQueue{// 使用双链表 模拟队列 支持头部和尾部添加和删除元素private LinkedList<Integer> maxq = new LinkedList<>();public void push(int n){// 尾部添加一个元素 需要维护单调队列 从尾部到头部 单调递增的性质// 从尾部开始 将前面小于她的元素 全部删除掉 这样维护的就是一个单调队列while(!maxq.isEmpty() && maxq.getLast() < n){maxq.pollLast();// 删除尾部元素}maxq.addLast(n);// 添加元素 尾部添加元素}// 计算最大元素 直接就是取出 头部元素 因为头部元素最大public int max(){return maxq.getFirst();}// 头部删除元素public void pop(int n){if(n == maxq.getFirst()){maxq.pollFirst();}}}
}相关文章:
【单调队列】 239. 滑动窗口最大值
239. 滑动窗口最大值 解题思路 计算每一个滑动窗口的最大值 关键在于借助单调队列实现窗口对于单调队列 尾部添加元素 头部删除元素添加元素操作:从尾部开始循环对比 删除比当前元素小的元素获取最大值元素 直接获取头部元素删除元素操作 直接删除头部元素 class…...
Spring实例化源码解析之ComponentScanAnnotationParser(四)
上一章我们分析了ConfigurationClassParser,配置类的解析源码分析。在ComponentScans和ComponentScan注解修饰的候选配置类的解析过程中,我们需要深入的了解一下ComponentScanAnnotationParser的parse执行流程,SpringBoot启动类为什么这么写&…...
MySQL - 外键(foreign key)约束的作用和使用
什么是外键约束? 外键:用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。 外键约束是用于建立两个表之间关系的一种约束,它定义了一个表中的列与另一个表中的列之间的关系。外键约束可以保证数据的完整性和一致性…...
前端开发之服务器的基本概念与初识Ajax
1,服务器的基本概念与初识Ajax 1.1 URL地址的组成部分 1.2 客户端与服务器的通信过程 1.3 网页中如何请求数据 1.4 $.get()函数 1.4.1 $.get()函数的语法 // jQuery 中 $.get() 函数的功能单一,专门用来发起 get 请求,从而将服务器上的资源…...
数据结构排序算法---八大排序复杂度及代码实现
文章目录 一、冒泡排序代码实现 二、直接插入排序代码实现 三、希尔排序代码实现 四、选择排序代码实现 五、堆排序代码实现 六、快速排序代码实现 七、归并排序代码实现 八、计数排序代码实现 稳定性:相同的数据排序后,相对位置是否发生改变 一、冒泡排…...
GMS之Launcher中去除默认Search或替换为Chrome Search
将Launcher中搜索框去除 将FeatureFlags.java文件中的QSB_ON_FIRST_SCREEN变量修改为false \system\vendor\mediatek\proprietary\packages\apps\Launcher3\src\com\android\launcher3\config\FeatureFlags.java/*** Defines a set of flags used to control various launche…...
@DateTimeFormat 和 @JsonFormat 的详细研究
关于这两个时间转化注解,先说结论 一、介绍 1、DateTimeFormat DateTimeFormat 并不会根据得到其属性 pattern 把前端传入的数据转换成自己想要的格式,而是将前端的String类型数据封装到Date类型;其次它的 pattern 属性是用来规范前端传入…...
nodejs基于Vue.js健身体育器材用品商城购物网97794
管理员端的功能主要是开放给系统的管理人员使用,能够对用户的信息进行管理,包括对用户、健身器材、器材类型、系统和订单进行查看,修改和删除、新增等,对系统整体运行情况进行了解。用户的功能主要是对个人账号和密码进行更新信息…...
C#WPF框架Microsoft.Toolkit.MvvM应用实例
本文实例演示C#WPF框架Microsoft.Toolkit.MvvM应用 目录 一、MVVM概述 二、MVVMLight概述 三、使用Microsoft.Toolkit.Mvvm框架 一、MVVM概述 MVVM概述MVVM是Model-View-ViewModel的简写,主要目的是为了解耦视图(View)和模型(Model)。...
蓝桥杯每日一题2023.9.27
4408. 李白打酒加强版 - AcWing题库 题目描述 题目分析 对于这题我们发现有三个变量,店,花,酒的数量,对于这种范围我们使用DP来进行分析。 dp[i][j][k]我们表示有i个店,j朵花,k单位酒的集合,…...
Redis与分布式-主从复制
接上文 常用中间件-OAuth2 1.主从复制 启动两个redis服务器。 修改第一个服务器地址 修改第二个redis 然后分别启动 redis-server.exe redis.windows.conf) 查看当前服务器的主从状态,打开客户端:输入info replication命令来查看当前的主从状态&am…...
QT pyside2 线程嵌套子线程 实现开始运行和停止运行
文章目录 前言为什么要使用多线程 一、单个线程实现按钮方法的执行二、线程嵌套多个子线程实现按钮方法的执行三、QT GUI常用代码3.1 多线程取出队列任务循环执行,无停止3.2 将某个方法放在线程中执行3.3 QT pyside2 tableWidget 清除日志3.4 退出整个GUI程序(杀死进…...
江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮
在江西这片充满活力的土地上,数字经济如潮水般涌动,会展文化与科技的完美结合,正如新时代的璀璨繁星照亮夜空,更预示着一场AIGC创新的壮丽篇章即将展开。作为拓世科技集团的老朋友,江西广电多位领导多次莅临拓世科技集…...
【RabbitMQ实战】06 RabbitMQ配置
一、概述 一般情况下,可以使用默认的内建配置来有效地运行RabbitMQ,并且大多数情况下也并不需要修改任何 RabbitMQ的配置。当然,为了更加有效地操控 RabbitMQ,也可以利用调节系统范围内的参数来达到定制化的需求。 RabbitMQ提供…...
CTF 全讲解:[SWPUCTF 2021 新生赛]jicao
文章目录 参考环境题目index.phphighlight_file()include()多次调用,多次执行单次调用,单次执行 $_POST超全局变量HackBarHackBar 插件的获取 $_POST打开 HackBar 插件通过 HackBar 插件发起 POST 请求 GET 请求查询字符串超全局变量 $_GET JSONJSON 数据…...
FL Studio21.1电脑试用体验版音乐制作软件
我一直以来对音乐艺术都很感兴趣。最近我接触到了一款名为 FL Studio 的电脑版音乐制作软件,深感其强大功能和广泛适用性。通过使用这款软件,我不仅深入了解了音乐制作的过程与技巧,也加深了对音乐创作的理解。 FL Studio 最初是一款针对 MI…...
【数据结构】单链表的基本操作(节点建立、插入删除)
1. 单链表的基本操作 1.1. 链表的定义1.2. 链表的创建(初始化) 1.2.1. 不带头结点的链表1.2.2. 带头结点的链表 1.3. 链表的插入和删除 1.3.1. 按位序插入 1.3.1.1. 带头结点1.3.1.2. 不带头结点 1.3.2. 指定节点的后插操作1.3.3. 指定元素的前插操作1.3…...
DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。
DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。 *.dem是一种比较常见的DEM数据格式,其有两种文件组织方式,即NSDTF-DEM和USGS-DEM。 (1)NSDT…...
施耐德电气:勾勒未来工业愿景,赋能中国市场
9月19日,第23届中国国际工业博览会(简称“工博会”)在上海隆重召开。作为全球能源管理和自动化领域的数字化转型专家,施耐德电气在工博会现场全方位展现了自身对未来工业的全新视野与深刻见解,不仅展示了其贯通企业设计…...
安防监控产品经营商城小程序的作用是什么
安防监控产品覆盖面较大,监控器、门禁、对讲机、烟感等都有很高用途,家庭、办公单位各场景往往用量不少,对商家来说,市场高需求背景下也带来了众多生意,但线下门店的局限性,导致商家想要进一步增长不容易。…...
GlitchTip:开源错误追踪平台完全指南:Sentry替代方案的完整教程
GlitchTip:开源错误追踪平台完全指南:Sentry替代方案的完整教程 背景 在应用开发和运维过程中,错误追踪是保障服务质量的关键环节。Sentry 作为业界领先的错误追踪服务,提供了强大的错误收集和分析能力,但其云服务版…...
Windows右键菜单管理效率提升指南:用ContextMenuManager打造个性化定制体验
Windows右键菜单管理效率提升指南:用ContextMenuManager打造个性化定制体验 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾遇到这样的场景&…...
3分钟搞定Windows音频捕获:win-capture-audio让你的录音效率翻倍
3分钟搞定Windows音频捕获:win-capture-audio让你的录音效率翻倍 【免费下载链接】win-capture-audio An OBS plugin that allows capture of independant application audio streams on Windows, in a similar fashion to OBSs game capture and Discords applicat…...
鸿蒙系统深度优化与安全实践指南:基于Magisk的模块化配置方案
鸿蒙系统深度优化与安全实践指南:基于Magisk的模块化配置方案 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 在移动设备生态中,系统深度优化与安全实践始终是技术探索者追求的核…...
别再只跑Demo了!手把手教你用vLLM部署微调后的Qwen2.5-3B-Instruct模型,实现高效批量推理
从微调到生产:Qwen2.5-3B-Instruct模型的高效推理部署实战 当开发者完成LoRA微调后,往往会面临一个现实问题:如何将训练好的模型真正用起来?原生Transformers推理在吞吐量和延迟上的表现,很难满足生产环境的需求。本文…...
51单片机按键控制实战:从消抖到状态切换的完整代码解析
51单片机按键控制实战:从消抖到状态切换的完整代码解析 在嵌入式系统开发中,按键控制是最基础也最关键的交互方式之一。无论是简单的家电控制面板,还是复杂的工业设备操作界面,按键作为人机交互的桥梁,其稳定性和响应速…...
取水泵站远程监控物联网系统方案
某取水泵站具备河流/水库双水源取水设计,配置调节池实现水量缓冲,同时包括取水泵、电动蝶阀、潜污泵、送/排风机、原水水质检测仪等设备,实现对泵站设备工况的全面监控与智能控制,保障各个子水厂的供水安全与稳定。通过将现场PLC控…...
ArcGIS模型构建器实战:一键加载上百个SHP文件(含子文件夹)的保姆级教程
ArcGIS模型构建器实战:一键加载上百个SHP文件(含子文件夹)的保姆级教程 当你在城市规划部门接手一个历史遗留项目,或是从不同合作方收到几十个分散的SHP文件时,是否经历过这样的崩溃瞬间?每个文件夹挨个点开…...
Anomalib使用
Anomalib 是一个专注于视觉异常检测的开源库,旨在为开发者、研究人员和工业用户提供一站式解决方案。无论是检测生产线上的产品缺陷、监控视频中的异常行为,还是识别医疗影像中的病灶,Anomalib 都能胜任。其设计理念是简单、模块化、高效&…...
毕业论文查重52%降到8%?实测 PCPASS 智能助手,这届AI降重有点东西!
论文查重,大概是每个毕业生都要经历的“降压药”时刻。 对着满篇通红的查重报告,手动改词、调换语序,忙活了一整天,结果重测还是原地踏步?最近被不少同学催更测评一款呼声很高的神器——PCPASS智能论文助手。今天我就…...
