双端队列(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),每个索引最多入队出队一次。
相关推荐
青少儿编程课堂9 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会C/C++考级:分层图最短路解析
c++·python·算法·bfs·信息学竞赛
YSL07012439 分钟前
一文通关-----排序
数据结构·算法
ZhengEnCi11 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考11 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
夜不会漫长13 小时前
C++:红黑树
数据结构·算法
AI备案指南-满满14 小时前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记
Ramble_Naylor14 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
秋天的怀念_David14 小时前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
不一样的故事12614 小时前
NB/T 47013.8-2015 附录D 吸枪技术
人工智能·经验分享·算法
通问AI14 小时前
用 200 行 Python 给文档库做「上下文完整度」自检:四个可复算的检查项
算法