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

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

求解代码

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,这也就是我们要移除的窗口最左侧元素的下标

http://www.cnnetsun.cn/news/648186.html

相关文章:

  • Dify工作流实战指南:从零到一玩转AI自动化
  • 教育场景实战:用DeepSeek-R1-Distill-Qwen-1.5B快速开发数学解题助手
  • Citra模拟器完整使用指南:从新手到精通
  • 5分钟搞定电子课本下载:智慧教育平台PDF获取全攻略
  • 支持混合语言与注释优化,HY-MT1.5-7B让翻译更精准
  • Llama3-8B轻量级部署:边缘设备运行可行性分析
  • 高效文献管理:Zotero Style插件完全配置手册
  • Qwen3-4B-Instruct-2507实战:从零开始搭建长文本处理系统
  • PixVerse 发布世界首个实时视频流模型
  • OptiScaler终极指南:让所有显卡都能享受顶级游戏画质的免费神器
  • brat快速标注工具终极教程:从入门到精通文本关系标注
  • 如何快速获取中小学电子课本PDF:教师必备的完整下载指南
  • 10分钟精通Obsidian容器化部署:打造专属知识管理平台
  • FunASR语音识别优化指南:如何提升长音频识别准确率
  • 如何用LLM创作高质量古典乐?NotaGen镜像全解析
  • 5分钟打造专业音乐播放器:foobox-cn美化全攻略
  • 从零部署高性能文本转语音|Supertonic大模型镜像实战详解
  • YOLOv8目标检测实战:复杂街景图像识别完整步骤
  • chainlit前端开发:HY-MT1.5-1.8B可视化调用界面
  • 如何快速掌握电子课本下载:面向教师的终极解决方案
  • AI智能证件照制作工坊代码实例:调用API实现批量处理
  • 终极指南:快速上手FunClip自动化视频剪辑工具
  • 开发者推荐:NewBie-image-Exp0.1镜像免配置部署实战测评
  • ComfyUI-TeaCache终极指南:3步实现AI图像生成2倍加速
  • Image-to-Video提示词编写秘籍:让效果提升300%
  • RevokeMsgPatcher防撤回终极教程:3分钟搞定消息全记录
  • RevokeMsgPatcher:消息防撤回工具的深度解析与实践指南
  • 国家中小学智慧教育平台电子课本下载神器:5步搞定PDF教材获取
  • 如何轻松获取国家中小学智慧教育平台电子教材:完整下载指南
  • 三步掌握智能资源解析:跨平台电子课本下载终极方案