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

239. 滑动窗口最大值

239. 滑动窗口最大值

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
  • 错误经验吸取

原题链接:

239. 滑动窗口最大值
https://leetcode.cn/problems/sliding-window-maximum/description/

完成情况:

在这里插入图片描述

解题思路:

随时随地维护一个大小为k的堆

参考代码:

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {      //随时随地维护一个大小为k的堆if (nums == null || nums.length == 0 || k == 0) {return new int[0];}//存放结果元素的数组int [] res = new int[nums.length - k + 1];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;}
}class MyQueue {Deque<Integer> deque = new LinkedList<>();//弹出元素时,比较当前要弹出的数值是否等于队列出口的数值,如果相等则弹出//同时判断队列当前是否为空void poll(int val) {if (!deque.isEmpty() && deque.peek() == val) {deque.poll();}}//添加元素时,如果要添加的元素大于入口处的元素,就将入口元素弹出//保证队列元素单调递减//比如此时队列元素3,1,2将要入队,比1大,所以1弹出,此时队列:3,2void add(int val) {while (!deque.isEmpty() && deque.getLast() < val) {deque.removeLast();}deque.add(val);}//队列队顶元素始终为最大值int peek() {return deque.peek();}
}

错误经验吸取

http://www.lryc.cn/news/230552.html

相关文章:

  • c++ barrier 使用详解
  • c# 接口
  • 1、NPC 三电平SVPWM simulink仿真
  • JAVA对象列表强转失败,更好的方法
  • 2023最新版本 从零基础入门C++与QT(学习笔记) -5- 动态内存分配(new)
  • asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • flink的键值分区状态自动过期ttl配置
  • 解决Mac配置maven环境后,关闭终端后环境失效的问题(适用于所有终端关闭后环境失效的问题)
  • springboot运行jar包,实现复制jar包resources下文件、文件夹(可支持包含子文件夹)到指定的目录
  • Webpack Bundle Analyzer包分析器
  • SQL-----STUDENT
  • OpenCV入门——图像视频的加载与展示一些API
  • Control的Invoke和BeginInvoke
  • 什么是OpenCL?
  • AdaBoost:提升机器学习的力量
  • Pikachu(皮卡丘靶场)初识XSS(常见标签事件及payload总结)
  • 一则DNS被重定向导致无法获取MySQL连接处理
  • Vue3中如何使用this
  • 7.jvm对象内存布局
  • U-boot(一):Uboot命令和tftp
  • 代码随想录算法训练营第五十三天丨 动态规划part14
  • pdf增强插件 Enfocus PitStop Pro 2022 mac中文版功能介绍
  • uniapp app tabbar 页面默认隐藏
  • 深度学习 YOLO 实现车牌识别算法 计算机竞赛
  • 即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]
  • 为什么UI自动化难做?—— 关于Selenium UI自动化的思考
  • Python小白之“没有名称为xlwings‘的模块”
  • RK3588 学习教程1——获取linux sdk
  • 保护您的Google账号安全:检查和加固措施
  • 「Verilog学习笔记」优先编码器Ⅰ