双端队列(Deque)

双端队列(Deque)要点速记:

  • 定义:两端都能插入/删除的队列。常用实现:ArrayDeque。
  • 常用操作(以 Deque<Integer> q = new ArrayDeque<>();):
  • 头部:q.addFirst(x) / q.removeFirst() / q.peekFirst()
  • 尾部:q.addLast(x) / q.removeLast() / q.peekLast()

ArrayDeque,操作有:addLast/removeLast(尾部),addFirst/removeFirst(头部),peekFirst/peekLast 查看头尾元素但不移除。

  • 用索引存储而非值:便于判断过期(是否滑出窗口)。
  • 滑动窗口最大值的单调队列套路:
  1. 先弹掉队头过期索引(peekFirst() <= i - k)

  2. 再弹掉队尾"劣势"索引(对应值 ≤ 当前值),保证值单调递减

  3. 把当前索引加到队尾

  4. 窗口形成后,队头即当前窗口最大值

  • 单调性的意义:队头始终是最大值;队尾只保留可能成为未来最大值的候选,时间复杂度 O(n),每个索引最多入队出队一次。
相关推荐
EdmundXjs12 小时前
大模型核心概念解读
人工智能·算法
lookaroundd12 小时前
llm-compressor 普通量化调用链分析
python·算法
小羊在睡觉12 小时前
力扣239. 滑动窗口最大值
数据结构·后端·算法·leetcode·go
兰令水12 小时前
topcode【随机算法题】【2026.5.20打卡-java版本】
java·开发语言·算法
此生决int12 小时前
算法从入门到精通——前缀和
c++·算法·蓝桥杯
大大杰哥12 小时前
leetcode hot100(4)矩阵
算法·leetcode·矩阵
小白|12 小时前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
nebula-AI12 小时前
人工智能导论:模型与算法(未来发展与趋势)
人工智能·神经网络·算法·机器学习·量子计算·automl·类脑计算
炽烈小老头12 小时前
【每天学习一点算法 2026/05/21】课程表
学习·算法
luoganttcc13 小时前
大模型是否即将到达算法极限
算法