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

server/2025/1/17 5:09:14/

集合 关系 介绍

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.ppmy.cn/server/159003.html

相关文章

钉钉消息推送()

记录一下java实现消息推送 1. 首先添加依赖 <dependencies><dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version></dependency><dependency&…

MyBatis递归查询层级关系的树

之前做递归的时候写了那么多java代码发现根本不需要&#xff0c;直接sql就能搞定&#xff0c;直接上代码。 数据&#xff1a;根据parentId查出id&#xff0c;然后把id赋值给parentId&#xff0c;在查处原本parentId下面有哪些级别的数据。 实体类&#xff1a;这里关键是id&a…

Windows Subsystem for Linux (WSL) 中安装 Redis

在 Windows Subsystem for Linux (WSL) 中安装 Redis 是一个常见的开发环境设置过程。以下是详细步骤&#xff0c;适用于 Ubuntu 或其他基于 Debian 的 Linux 发行版。 ✅ 步骤 1&#xff1a;打开 WSL 终端 首先&#xff0c;确保你已经在 Windows 上启用了 WSL&#xff0c;并安…

centos7.6 安装nacos 2.0.4与恢复nacos的mysql

1 安装目录 useradd adminmkdir -p /home/admin/nacos2 下载 wget https://github.com/alibaba/nacos/releases/download/2.0.4/nacos-server-2.0.4.zip?spm5238cd80.1f77ca18.0.0.4d31e37ewdt6EW&filenacos-server-2.0.4.zip cp nacos-server-2.0.4.zip /home/admin/ un…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析&#xff1a; 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数&#xff0c;使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

3d 可视化库 vister部署笔记

目录 vister 开源地址: python版本: 在python3.10以上版本安装 viser, 测试ok的案例: 立方体mesh选中 SMPL-X可视化 ok 推理代码: vister 开源地址: GitHub - nerfstudio-project/viser: Web-based 3D visualization + Python python版本: 在python3.10以上版本…

备战蓝桥杯:树的存储与遍历(dfs和bfs)

树的概念 树的逻辑结构是树形结构&#xff0c;和我们之前的线性结构又不太一样了&#xff0c;是一种一对多的关系 树的结点分为根节点&#xff0c;叶子结点&#xff08;没有分支的结点&#xff09; 以及分支结点 从上往下看&#xff0c;每个结点都有0个或多个后继 从下往上…

Lesson 109 A good idea

Lesson 109 A good idea 词汇 idea n. 主意&#xff0c;想法 复数&#xff1a;ideas 用法&#xff1a;口语&#xff1a;Good idea! 好主意&#xff01;       Big idea! 高见&#xff01;好主意&#xff01;       Great idea! 好主意       Bad idea! 坏主…