[start, end] → 14 区间叶子恰好 18 个,与 18 个模式一一对应——构建时程序化核对过覆盖率与唯一性。
这张表由各章 §2 的识别信号跨章聚合而成;每一对都在相关章节的分流条件里写明了怎么分。
| 题面出现… | 去哪一章 |
|---|---|
| 「两数之和 / 配对 / 补数」且数组无序 | 01 哈希 |
| 「出现次数 / 频率 / 众数 / anagram」 | 01 哈希 |
| 「分组 / 归类 / 把同类放一起」 | 01 哈希 |
| 「是否存在 / 有没有重复 / 出现过吗」 | 01 哈希 |
| 「最长连续序列」但不要求元素相邻 | 01 哈希 |
| 题目要求 O(n),而你的暴力解是两层循环在「回头找」 | 01 哈希 |
| 「3Sum / 4Sum / 最接近的三数之和」 | 02 双指针 |
| 「原地去重 / 移除元素 / 把某类挪到前面」 | 02 双指针 |
| 「回文 / 对称 / 首尾比较」 | 02 双指针 |
| 「容器 / 面积 / 两根柱子」 | 02 双指针 |
| 「已排序数组」+ 找一对 / 三个数满足条件 | 02 双指针 |
| 链表「找中点 / 判环 / 倒数第 n 个」 | 02 双指针 |
| 「s1 的排列是不是 s2 的子串」「找出所有 anagram 起点」 | 03 滑动窗口 |
| 「包含 t 中所有字符的最小子串」 | 03 滑动窗口 |
| 「最长 / 最短连续子串 / 子数组」+ 一个约束条件 | 03 滑动窗口 |
| 「至多 K 个不同字符 / 至多 K 次替换 / 至多 K 个 0」 | 03 滑动窗口 |
| 「长度恰好为 k 的子数组的最大和 / 平均值」 | 03 滑动窗口 |
| 你的暴力解是「枚举所有子数组再逐个检查」 | 03 滑动窗口 |
| 「下一个更大 / 更小元素」 | 04 栈与单调栈 |
| 「柱状图 / 矩形 / 最大面积」 | 04 栈与单调栈 |
| 「滑动窗口的最大 / 最小值」 | 04 栈与单调栈 |
| 「第一个比它高 / 低 / 便宜的…」 | 04 栈与单调栈 |
| 你写出的暴力解,内层循环在「向左/右扫,找第一个满足条件就停」 | 04 栈与单调栈 |
| 括号匹配、嵌套、「撤销上一步」 | 04 栈与单调栈 |
| 「两个有序数组的中位数 / 第 K 小」 | 05 二分查找 |
| 「已排序数组里找目标 / 插入位置 / 第一个大于 X 的」 | 05 二分查找 |
| 「旋转有序数组」 | 05 二分查找 |
| 「最小的最大值」「最大的最小值」「最少需要多少天 / 多快」 | 05 二分查找 |
| 「能否在 X 之内完成」这种问句本身 | 05 二分查找 |
| 数据规模到 10⁹ 但答案是个整数 | 05 二分查找 |
| 「O(1) 时间的 get 和 put」 | 06 链表 |
| 「反转 / 翻转链表(或其中一段)」 | 06 链表 |
| 「合并两个有序链表」「删除倒数第 n 个」 | 06 链表 |
| 「带随机指针的深拷贝」 | 06 链表 |
| 「找中点 / 判断有环 / 环的入口」 | 06 链表 |
| 「重排 / 判回文链表」 | 06 链表 |
| 「BST」+「第 K 小 / 有序输出」 | 07 树的遍历与递归 |
| 「前序 + 中序构造」「序列化 / 反序列化」 | 07 树的遍历与递归 |
| 「层 / 每一层 / 最短路径 / 右视图」 | 07 树的遍历与递归 |
| 「最近公共祖先 LCA」 | 07 树的遍历与递归 |
| 「深度 / 高度 / 直径 / 是否平衡」 | 07 树的遍历与递归 |
| 「验证 BST」 | 07 树的遍历与递归 |
| 「前 K 个高频 / 最接近原点的 K 个点」 | 08 堆 / Top-K |
| 「动态中位数」 | 08 堆 / Top-K |
| 「合并 K 个有序链表 / 数组」 | 08 堆 / Top-K |
| 「数据流 / 不断插入,随时要回答」 | 08 堆 / Top-K |
| 「每次取出当前最大的,处理完再放回去」 | 08 堆 / Top-K |
| 「第 K 大 / 第 K 小」且数组无序 | 08 堆 / Top-K |
| n ≤ 20 却要枚举,或明确说「保证答案不超过 X 个」 | 09 回溯 |
| 「列出全部方案 / 打印所有路径」 | 09 回溯 |
| 「在矩阵里找一个单词 / 一条路径」 | 09 回溯 |
| 「所有子集 / 所有组合 / 所有排列」 | 09 回溯 |
| 「把字符串切成若干段,每段都要满足…」 | 09 回溯 |
| 「棋盘 / 皇后 / 数独」 | 09 回溯 |
| 「克隆图 / 深拷贝一张图」 | 10 图的 BFS/DFS |
| 「同时从多个点开始扩散」(腐烂的橘子、着火) | 10 图的 BFS/DFS |
| 「岛屿 / 连通块 / 区域 / 省份的个数」 | 10 图的 BFS/DFS |
| 「最少步数 / 最短路径 / 最少几轮」(边权都是 1) | 10 图的 BFS/DFS |
| 「被包围的区域 / 流向两个大洋」 | 10 图的 BFS/DFS |
给的是 edges 数组而不是网格 | 10 图的 BFS/DFS |
| 「先修课 / 前置条件 / 依赖关系」 | 11 拓扑排序 |
| 「判断有没有循环依赖 / 能不能全部完成」 | 11 拓扑排序 |
| 「根据给定的单词序推字母表顺序」 | 11 拓扑排序 |
| 「编译顺序 / 任务调度顺序 / 打包顺序」 | 11 拓扑排序 |
| 「输出任意一种合法顺序」 | 11 拓扑排序 |
| 图是有向的且要问顺序 | 11 拓扑排序 |
| 「判断这张图是不是一棵树」 | 12 并查集 |
| 「加上这条边会不会形成环」 | 12 并查集 |
| 「把有共同元素的集合归并」(账户、邮箱、字符串) | 12 并查集 |
| 「有多少个连通分量 / 省份 / 朋友圈 / 组」 | 12 并查集 |
| 「等式约束是否自洽」(a==b, b!=c) | 12 并查集 |
| 边是一条条流进来的,中途还要回答问题 | 12 并查集 |
| 「0 和 1 数量相同的最长子数组」 | 13 前缀和 |
| 「区间和 / 范围求和」且要多次查询 | 13 前缀和 |
| 「和恰好为 K 的子数组个数 / 最长长度」 | 13 前缀和 |
| 「能被 K 整除的子数组」 | 13 前缀和 |
| 「除自身以外数组的乘积」且不许用除法 | 13 前缀和 |
| 二维矩阵的「子矩形和」 | 13 前缀和 |
| 「合并重叠区间」 | 14 区间 |
| 「插入一个新区间并合并」 | 14 区间 |
| 「最少删掉几个使其互不重叠」 | 14 区间 |
| 「用最少的箭射爆所有气球」「区间覆盖」 | 14 区间 |
| 「需要几间会议室 / 最多同时有几个」 | 14 区间 |
输入是一堆 [start, end] | 14 区间 |
| 「划分标签 / 最少分成几段」 | 15 贪心 |
| 「加油站能否绕一圈」「从哪个位置出发」 | 15 贪心 |
| 「按顺序发牌 / 分成若干连续组」 | 15 贪心 |
| 「最大子数组和」 | 15 贪心 |
| 「能否到达 / 最少几步到达」且每一步的选择不影响后面的结构 | 15 贪心 |
| 题面在问「最优值」而你能一句话说清每步该选谁 | 15 贪心 |
| 「不能取相邻的两个」 | 16 一维 DP |
| 「以 i 结尾的最长 / 最大」 | 16 一维 DP |
| 「凑出金额 / 能否拆分成若干段」 | 16 一维 DP |
| 「有多少种方法 / 最少多少步」且答案只由前几项决定 | 16 一维 DP |
| 数据规模 10⁴~10⁵ 且要最优值 | 16 一维 DP |
| 环形(首尾相接) | 16 一维 DP |
| 「两个字符串 / 两个数组」比较、匹配、对齐 | 17 二维 DP 与背包 |
| 「加减号 / 分成两组」凑出目标 | 17 二维 DP 与背包 |
| 「带冷冻期 / 手续费的股票」 | 17 二维 DP 与背包 |
| 「编辑距离 / 最长公共子序列 / 通配符匹配」 | 17 二维 DP 与背包 |
| 「网格里从左上走到右下」(路径数 / 最小路径和) | 17 二维 DP 与背包 |
| 「能否把数组分成和相等的两半」 | 17 二维 DP 与背包 |
| 「子序列」+「最长 / 最多」且只有一个序列 | 18 子序列 DP |
| 「最少用几个不升序列覆盖」 | 18 子序列 DP |
| 「最长上升 / 递增子序列」(不要求连续) | 18 子序列 DP |
| 「最长可整除子集 / 最长字符串链」 | 18 子序列 DP |
| 「最长数对链 / 俄罗斯套娃信封」 | 18 子序列 DP |
| 「有多少个最长上升子序列」 | 18 子序列 DP |
| 模式 | 模板 | 默写口诀 / 用途 |
|---|---|---|
| 01 哈希 | 模板 A · 配对 | 先查后存 |
| 01 哈希 | 模板 B · 分组 | 给每个元素算一个签名 |
| 02 双指针 | 模板 A · 相向双指针 | 两端起步、小了动左、大了动右 |
| 02 双指针 | 模板 B · 同向快慢 | 原地覆盖类 |
| 03 滑动窗口 | 模板 A · 可变窗口 | 右扩、不合法就左缩、合法后统计 |
| 03 滑动窗口 | 模板 B · 定长窗口 | 窗口大小 k 固定 |
| 04 栈与单调栈 | 模板 A · 下一个更大元素 | 存下标、递减栈、弹出即结账 |
| 04 栈与单调栈 | 模板 B · 单调队列 | 仅 239 一题需要,认脸级 |
| 05 二分查找 | 模板 A · 边界二分 | 左闭右开、lo = mid + 1 / hi = mid、返回 lo |
| 05 二分查找 | 模板 B · 答案二分 | 判定函数才是题目本身 |
| 06 链表 | 模板 A · 反转 | 存 next、改指向、双双前进 |
| 06 链表 | 模板 B · 哨兵 + 双指针 | 合并 / 删除类 |
| 07 树的遍历与递归 | 模板 A · 递归三问 | 空的返回什么、左右各要什么、当前怎么合 |
| 07 树的遍历与递归 | 模板 B · 层序 BFS | 凡是带「层」字的题 |
| 08 堆 / Top-K | 模板 A · 大小为 K 的堆 | 入堆、超员、踢堆顶 |
| 08 堆 / Top-K | 模板 B · 对顶堆 | 仅动态中位数需要,认脸级 |
| 09 回溯 | 模板 A · 组合 / 子集 | 选、递归、撤销 |
| 09 回溯 | 模板 B · 排列 | 靠 used 数组标记占用 |
| 10 图的 BFS/DFS | 模板 A · 网格 DFS | 越界就回、不该走就回、进来先标记、再走四个方向 |
| 10 图的 BFS/DFS | 模板 B · 多源 BFS | 最少步数 |
| 11 拓扑排序 | 模板 A · Kahn 入度法 | 建图数入度、零入度入队、出队减邻居、计数判环 |
| 12 并查集 | 模板 A · 并查集 | find 一路压缩、union 小挂大、返回 False 即成环 |
| 13 前缀和 | 模板 A · 前缀和数组 | 长度 n+1、pre[0]=0、区间取两端之差 |
| 13 前缀和 | 模板 B · 前缀和 + 哈希 | 「恰好为 K」类 |
| 14 区间 | 模板 A · 排序 + 合并 | 排序、重叠就并、否则新开一段 |
| 14 区间 | 模板 B · 扫描线 | 求同时进行的最大数量 |
| 15 贪心 | 模板 A · 一路维护一个量 | 一个 cur 一个 best,每步只问一句该不该重来 |
| 15 贪心 | 模板 B · 先扫一遍再分段 | 划分 / 分组类 |
| 16 一维 DP | 模板 A · 线性 DP | 两个变量滚着走,每步只问选不选 |
| 16 一维 DP | 模板 B · 按容量填表 | 凑金额 / 能否拆分 |
| 17 二维 DP 与背包 | 模板 A · 双序列 / 网格 DP | 多开一圈边界、对上走对角、没对上各退一步 |
| 17 二维 DP 与背包 | 模板 B · 01 背包(一维) | 选或不选,容量倒序 |
| 18 子序列 DP | 模板 A · O(n²) LIS | 以 i 结尾、回头看 j、能接就接、答案取 max(dp) |
| 18 子序列 DP | 模板 B · 耐心排序 + 二分 | O(n log n),面试主推 |