文章内容
识别信号:滑动窗口最大/最小值、形如 dp[i] = min(dp[j]) + ... 的 DP 优化。
口诀:去尾保单调(新人压制弱旧人)、去头保时效(队头滑出窗口)。

滑动窗口最大值模板
java
Deque<Integer> q = new ArrayDeque<>(); // 存索引List<Integer> res = new ArrayList<>();for (int i = 0; i < n; i++) { // 1. 去尾:保持递减(求最大值) while (!q.isEmpty() && nums[q.peekLast()] <= nums[i]) { q.pollLast(); } // 2. 入队 q.offerLast(i); // 3. 去头:过期出队(窗口大小 k) if (q.peekFirst() <= i - k) { q.pollFirst(); } // 4. 收答案 if (i >= k - 1) { res.add(nums[q.peekFirst()]); // 队头即当前窗口最大值 }}求最小值改
>=。peekFirst()空队返回 null,自动拆箱 NPE,先判空。
本文由 AgentPlanFlow 生成