Java怎么实现滑动窗口的最大值
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍"Java怎么实现滑动窗口的最大值"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java怎么实现滑动窗口的最大值"文章能帮助大家解决问题。一、
千家信息网最后更新 2025年11月09日Java怎么实现滑动窗口的最大值
这篇文章主要介绍"Java怎么实现滑动窗口的最大值"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java怎么实现滑动窗口的最大值"文章能帮助大家解决问题。
一、题目
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
二、单调队列解析
题目让求随着滑动窗口的滑动,返回窗口覆盖范围的最大值
该题不适合优先级队列,因为采用大顶堆存放k个数字,可以知道此时的最大值,但是窗口是滑动的,大顶堆每次只能弹出最大值,无法移除其他值,即无法用大顶堆维护滑动窗口里的值。
所以采用队列维护,随着窗口的移动,队列先进先出
此时对队列的要求是,队列首位为最大值,整个队列呈递减
例如:1,3,-1,-3,5,3,6,7
初始:1,3,-1,队列存入3,-1,使其保持递减,且首位为此时滑动窗口的最大值
移动到-3,队列:3,-1,-3
移动到5,队列:5
移动到3,队列:5,3
移动到6,队列:6
移动到7,队列:7
所以为了满足要求,需要自定义队列
从示例可以看出,队列没必要维护窗口里所有元素,只需要保证队列首位此时窗口的最大,而且,队列元素为递减,具体看代码
三、代码
import java.util.Deque;import java.util.LinkedList;//自定义数组class MyQueue { Deque deque = new LinkedList<>(); //弹出元素时,比较当前要弹出的数值是否等于队列出口的数值,如果相等则弹出 //同时判断队列当前是否为空 void poll(int val) { if (!deque.isEmpty() && val == deque.peek()) { deque.poll(); } } //添加元素时,如果要添加的元素大于入口处的元素,就将入口元素弹出 //保证队列元素单调递减 //比如此时队列元素3,1,2将要入队,比1大,所以1弹出,此时队列:3,2 void add(int val) { while (!deque.isEmpty() && val > deque.getLast()) { deque.removeLast(); } deque.add(val); } //队列队顶元素始终为最大值 int peek() { return deque.peek(); }}class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if (nums.length == 1) { return nums; } int len = nums.length - k + 1; //存放结果元素的数组 int[] res = new int[len]; int num = 0; //自定义队列 MyQueue myQueue = new MyQueue(); //先将前k的元素放入队列 for (int i = 0; i < k; i++) { myQueue.add(nums[i]); } res[num++] = myQueue.peek(); for (int i = k; i < nums.length; i++) { //滑动窗口移除最前面的元素,移除是判断该元素是否放入队列 myQueue.poll(nums[i - k]); //滑动窗口加入最后面的元素 myQueue.add(nums[i]); //记录对应的最大值 res[num++] = myQueue.peek(); } return res; }} 关于"Java怎么实现滑动窗口的最大值"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
队列
元素
最大
最大值
移动
数组
知识
单调
代码
入口
数值
数字
行业
题目
保证
不同
实用
必要
优先级
先进
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美萍美发店管理系统数据库密码
广州趣野营互联网科技有限公司
moh的服务器要关闭吗
广州智能软件开发流程
怎样保存表格在数据库
网络安全钥匙框弹不出来
网络安全应急指挥中心考什么内容
铜梁区网络安全审计系统咨询证书
怎么申请成为一个服务器
兰州白帽子培训网络安全培训
春节重点网络安全工作
vpn服务器并未响应
计算机网络技术期末考试卷子
密码学与网络安全教育
php操作mysql数据库
计算机四级数据库考哪2科
幼儿园网络安全知识进校园
服务器为啥要至强cpu
网络安全工作制度执行不严格
服务器上安装sbt
智能手机软件开发方法
仙境传说连接服务器中断
赴日软件开发招聘真假
软件开发免税么
u2固态硬盘插入服务器不识别
rust无法解析服务器
变形金刚地球之战联不上服务器
db2 启动数据库
网吧无盘系统服务器
澳洋集团软件开发