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

【单调队列】 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();}}}
}
http://www.lryc.cn/news/178174.html

相关文章:

  • Spring实例化源码解析之ComponentScanAnnotationParser(四)
  • MySQL - 外键(foreign key)约束的作用和使用
  • 前端开发之服务器的基本概念与初识Ajax
  • 数据结构排序算法---八大排序复杂度及代码实现
  • GMS之Launcher中去除默认Search或替换为Chrome Search
  • @DateTimeFormat 和 @JsonFormat 的详细研究
  • nodejs基于Vue.js健身体育器材用品商城购物网97794
  • C#WPF框架Microsoft.Toolkit.MvvM应用实例
  • 蓝桥杯每日一题2023.9.27
  • Redis与分布式-主从复制
  • QT pyside2 线程嵌套子线程 实现开始运行和停止运行
  • 江西广电会展集团总经理李悦一行莅临拓世科技集团调研参观,科技璀璨AIGC掀新潮
  • 【RabbitMQ实战】06 RabbitMQ配置
  • CTF 全讲解:[SWPUCTF 2021 新生赛]jicao
  • FL Studio21.1电脑试用体验版音乐制作软件
  • 【数据结构】单链表的基本操作(节点建立、插入删除)
  • DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。
  • 施耐德电气:勾勒未来工业愿景,赋能中国市场
  • 安防监控产品经营商城小程序的作用是什么
  • php中判断指定字符串是否包含指定字符的封装函数
  • GICI-LIB源码阅读(三)因子图优化模型
  • 5、Docker安装mysql主从复制与redis集群
  • 【AI视野·今日NLP 自然语言处理论文速览 第四十三期】Thu, 28 Sep 2023
  • Unity 制作登录功能01-创建登录的UI并获取输入内容
  • 什么是用户画像?
  • DevExpress WinForms图表组件 - 直观的数据信息呈现方式!(二)
  • 基于AIOps实现智慧园区极简IT运维
  • chatgpt 只会死记硬背吗
  • 03-Zookeeper客户端使用
  • 自然语言处理(NLP)学习之与HanLP的初相识