news 2026/7/16 12:24:20

【单调队列】滑动窗口的最大值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【单调队列】滑动窗口的最大值

求解代码

classMonotonicQueue{LinkedList<Integer>queue=newLinkedList<>();publicvoidpush(intn){while(!queue.isEmpty()&&queue.getLast()<n){queue.pollLast();}queue.addLast(n);}publicvoidpop(intn){if(n==queue.getFirst()){queue.pollFirst();}}publicintmax(){returnqueue.getFirst();}}publicArrayList<Integer>maxInWindows(int[]num,intsize){MonotonicQueuewindow=newMonotonicQueue();ArrayList<Integer>res=newArrayList<>();if(num==null||size<=0||num.length==0||size>num.length){returnres;}for(inti=0;i<num.length;i++){if(i<size-1){window.push(num[i]);}else{window.push(num[i]);res.add(window.max());window.pop(num[i-size+1]);}}returnres;}

小贴士

1.构建一个特殊的【单调队列】来充当不断滑动的窗口

这个单调队列的队首记录了滑动过程中的最大值(对应max方法),从队首到队尾的元素值大小是单调递减的;

队列为空或者尾部的元素(getLast)小于要入队的元素时,将该尾部元素弹出(pollLast),元素是从队列尾部入队的(addLast)。

滑动窗口需要移除的元素等于队列头部(当前最大值)时,将队首元素弹出(pollFirst);

2.解释一下这个i-size+1

对于长度固定为size的滑动窗口,当窗口还没填满时,不考虑计算最大值和移除元素,直到把前size-1个元素填满;

从第size个元素开始(对应就是下标size-1),窗口正式填满,此时,依次完成把当前元素加入窗口,将窗口的最大值记录到res中,再把窗口最左侧的元素移除,为下一步滑动腾出一个位置。

那窗口最左侧元素的下标是什么呢?

因为当前元素是num[i],所以此时的窗口的右边界是i,又因为窗口的大小固定为size,所以,窗口的左边界就是i-size+1,这也就是我们要移除的窗口最左侧元素的下标

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 13:07:01

大规模部署HY-MT1.5-7B:成本控制与性能平衡

大规模部署HY-MT1.5-7B&#xff1a;成本控制与性能平衡 随着多语言交流需求的不断增长&#xff0c;高质量、低延迟的机器翻译服务已成为全球化应用的核心基础设施。在这一背景下&#xff0c;混元翻译模型&#xff08;HY-MT&#xff09;系列凭借其卓越的语言覆盖能力和翻译质量…

作者头像 李华
网站建设 2026/6/29 2:42:37

周末玩转Youtu-2B:云端GPU按小时计费,1块钱体验

周末玩转Youtu-2B&#xff1a;云端GPU按小时计费&#xff0c;1块钱体验 你是不是也和我一样&#xff0c;作为一名程序员&#xff0c;总想第一时间尝鲜最新的AI对话技术&#xff1f;但现实是&#xff1a;高端显卡动辄上万&#xff0c;本地部署环境配置复杂&#xff0c;光是装个…

作者头像 李华
网站建设 2026/7/13 0:04:13

Swift-All强化学习:云端GPU集群,支持并行采样

Swift-All强化学习&#xff1a;云端GPU集群&#xff0c;支持并行采样 你是不是也遇到过这样的问题&#xff1a;想训练一个游戏AI&#xff0c;让它学会打《星际争霸》或者《王者荣耀》&#xff0c;但本地电脑跑不动&#xff1f;一开多个环境就卡死&#xff0c;训练速度慢得像蜗…

作者头像 李华
网站建设 2026/7/1 11:08:37

RevokeMsgPatcher防撤回补丁:如何3步搞定消息防撤回?

RevokeMsgPatcher防撤回补丁&#xff1a;如何3步搞定消息防撤回&#xff1f; 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://…

作者头像 李华
网站建设 2026/7/11 21:12:19

SAM 3视频分割案例:虚拟试衣应用

SAM 3视频分割案例&#xff1a;虚拟试衣应用 1. 引言&#xff1a;图像与视频分割技术的演进 随着计算机视觉技术的不断进步&#xff0c;图像和视频中的对象分割已成为智能交互、内容创作和增强现实等领域的核心技术之一。传统的分割方法往往依赖于大量标注数据和特定任务模型…

作者头像 李华