news 2026/11/4 12:33:57

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

作者头像

张小明

前端开发工程师

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/11/4 23:06:24

Dify工作流实战指南:从零到一玩转AI自动化

Dify工作流实战指南&#xff1a;从零到一玩转AI自动化 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow …

作者头像 李华
网站建设 2026/11/4 23:06:33

教育场景实战:用DeepSeek-R1-Distill-Qwen-1.5B快速开发数学解题助手

教育场景实战&#xff1a;用DeepSeek-R1-Distill-Qwen-1.5B快速开发数学解题助手 1. 引言&#xff1a;轻量模型在教育场景中的价值 随着大模型技术的快速发展&#xff0c;如何将高性能AI能力部署到资源受限的教学环境中&#xff0c;成为教育科技领域的重要课题。传统大模型虽…

作者头像 李华
网站建设 2026/10/30 12:06:08

Citra模拟器完整使用指南:从新手到精通

Citra模拟器完整使用指南&#xff1a;从新手到精通 【免费下载链接】citra 项目地址: https://gitcode.com/GitHub_Trending/ci/citra 想要在电脑上重温任天堂3DS的经典游戏体验吗&#xff1f;Citra模拟器为你提供了完美的解决方案。这款开源模拟器不仅支持Windows、ma…

作者头像 李华
网站建设 2026/11/4 3:19:47

5分钟搞定电子课本下载:智慧教育平台PDF获取全攻略

5分钟搞定电子课本下载&#xff1a;智慧教育平台PDF获取全攻略 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 还在为找不到合适的电子教材而烦恼吗&#xff1f;备…

作者头像 李华
网站建设 2026/11/3 0:30:27

支持混合语言与注释优化,HY-MT1.5-7B让翻译更精准

支持混合语言与注释优化&#xff0c;HY-MT1.5-7B让翻译更精准 1. 引言&#xff1a;面向复杂场景的下一代翻译模型 随着全球化进程加速&#xff0c;跨语言交流的需求日益增长&#xff0c;传统翻译系统在面对混合语言输入、带格式文本以及专业术语密集内容时表现乏力。尽管通用…

作者头像 李华
网站建设 2026/11/3 17:46:26

Llama3-8B轻量级部署:边缘设备运行可行性分析

Llama3-8B轻量级部署&#xff1a;边缘设备运行可行性分析 1. 技术背景与部署挑战 随着大语言模型&#xff08;LLM&#xff09;在自然语言理解、代码生成和对话系统中的广泛应用&#xff0c;如何将高性能模型部署到资源受限的边缘设备成为工程落地的关键问题。传统千亿参数模型…

作者头像 李华