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

双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]

集合 关系 介绍

Deque 是一个接口

LinkedList 是这个接口的实现类

题目

输入输出

滑动窗口

基于双端队列实现

Deque<Integer> deque = new LinkedList<>();

滑动窗口代码

  public static List<Integer> maxSlidingWindow(int[] nums, int k) {List<Integer> result = new ArrayList<>();Deque<Integer> deque = new LinkedList<>();for (int i = 0; i < nums.length; i++) {// 移除不在当前窗口的元素if (!deque.isEmpty() && deque.peekFirst() < i - k + 1) {deque.pollFirst();}// 移除队列中比当前元素小的元素,因为它们不可能成为最大值while (!deque.isEmpty() && nums[deque.peekLast()] <= nums[i]) {deque.pollLast();}// 将当前元素的索引加入队列deque.offerLast(i);// 窗口已满,记录当前窗口的最大值if (i >= k - 1) {result.add(nums[deque.peekFirst()]);}}return result;}// 求每个窗口的最小值public static List<Integer> minSlidingWindow(int[] nums, int k) {List<Integer> result = new ArrayList<>();Deque<Integer> deque = new LinkedList<>();for (int i = 0; i < nums.length; i++) {// 移除不在当前窗口的元素if (!deque.isEmpty() && deque.peekFirst() < i - k + 1) {deque.pollFirst();}// 移除队列中比当前元素大的元素,因为它们不可能成为最小值while (!deque.isEmpty() && nums[deque.peekLast()] >= nums[i]) {deque.pollLast();}// 将当前元素的索引加入队列deque.offerLast(i);// 窗口已满,记录当前窗口的最小值if (i >= k - 1) {result.add(nums[deque.peekFirst()]);}}return result;}
http://www.lryc.cn/news/523408.html

相关文章:

  • HTML<img>标签
  • 【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】
  • Linux虚拟机安装与FinalShell使用:探索Linux世界的便捷之旅
  • Mixly米思齐1.0 2.0 3.0 软件windows版本MAC苹果电脑系统安装使用常见问题与解决
  • vben5 admin ant design vue如何使用时间范围组件RangePicker
  • Kafka 日志存储 — 文件目录及日志格式
  • 故障诊断 | BWO白鲸算法优化KELM故障诊断(Matlab)
  • 一文读懂AI Agent 智能体
  • 《 C++ 点滴漫谈: 二十二 》操作符炼金术:用C++ operator重塑代码美学
  • 通信协议之多摩川编码器协议
  • 新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
  • 4329 树的连边II
  • Spring的Bean详解=Bean别名+作用范围+使用场景
  • 聊一聊如何适应AI时代
  • dl学习笔记:(4)简单神经网络
  • 电商项目高级篇08-springCache
  • 4.1 AI 大模型应用最佳实践:如何提升 GPT 模型使用效率与质量
  • Linux top命令cpu使用率计算底层原理
  • vue知识点总结
  • [实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()
  • llamafactory使用8张昇腾910b算力卡lora微调训练qwen2-72b大模型
  • C++,设计模式,【目录篇】
  • 《目标检测数据集下载地址》
  • C 语言的void*到底是什么?
  • Linux中的文件上传和下载
  • DDD - 微服务落地的技术实践
  • fgets、scanf存字符串应用
  • 鸿蒙动态路由实现方案
  • Spring-boot3.4最新版整合swagger和Mybatis-plus
  • 基于Java的高校实习管理平台