实践实验
用实验把理解落到代码上
每个 Lab 都对应明确目标、建议用时和可验收提交物。先独立实现,再用边界测试与同伴 Review 检查理解是否可靠。
CHAPTER
基础
CHAPTER
线性表
01T01 · 第 1 章 · 基础~进阶Lab 01-T-01:顺序表选择题精练用 10 道选择题巩固顺序表的随机访问、元素移动、容量与复杂度分析。35~50 分钟01T02 · 第 1 章 · 基础~进阶Lab 01-T-02:单链表选择题精练用 10 道选择题练习单链表的头结点、插删顺序、遍历与复杂度。40~60 分钟01T03 · 第 1 章 · 基础~进阶Lab 01-T-03:双链表选择题精练用 10 道选择题练习双链表的四条链接、循环哨兵与双向遍历。40~60 分钟01T04 · 第 1 章 · 基础~进阶Lab 01-T-04:循环链表选择题精练用现有 2 道选择题练习循环链表的摘链操作和单节点边界。10~15 分钟01T05 · 第 1 章 · 基础~进阶Lab 01-T-05:静态链表选择题精练用现有 4 道选择题辨析静态链表的游标、容量、访问和空间取舍。15~25 分钟01E01 · 第 1 章 · 入门Lab 01-E-01:有序顺序表去重在有序顺序表中原地删除重复元素,练习双指针与元素搬移的边界控制。20~30 分钟01E02 · 第 1 章 · 入门~进阶Lab 01-E-02:顺序表循环右移在不借助与输入规模成正比的辅助空间前提下,将顺序表循环右移 k 位。25~40 分钟01E03 · 第 1 章 · 进阶Lab 01-E-03:顺序表第 k 大元素在无序顺序表中查找第 k 大的元素,理解基于划分的选择算法与排序取值的取舍。35~50 分钟01E04 · 第 1 章 · 入门Lab 01-E-04:单链表逆置反转单链表中所有节点的链接方向,练习迭代或递归方式修改 next 指针。20~30 分钟01E05 · 第 1 章 · 入门~进阶Lab 01-E-05:删除单链表倒数第 k 个节点用快慢指针一次遍历找到并删除单链表的倒数第 k 个节点。25~40 分钟01E06 · 第 1 章 · 入门Lab 01-E-06:合并两个有序单链表将两个已按非递减排列的单链表合并为一个新的有序单链表,练习链式结构的拼接与边界处理。25~35 分钟01E07 · 第 1 章 · 入门~进阶Lab 01-E-07:双链表回文判断利用双向链表可从两端同时遍历的特性,判断链表是否为回文序列。25~35 分钟01E08 · 第 1 章 · 进阶Lab 01-E-08:LRU 缓存模拟实现一个简化版 LRU 缓存,理解哈希表与双向链表的组合结构设计。45~60 分钟01E09 · 第 1 章 · 进阶Lab 01-E-09:双链表相邻节点交换交换双向链表中每对相邻节点,重点练习双向链接的四条指针同步修改。35~50 分钟01E10 · 第 1 章 · 入门~进阶Lab 01-E-10:约瑟夫环用循环链表模拟经典约瑟夫环问题,理解循环结构的遍历与节点删除。30~45 分钟01E11 · 第 1 章 · 进阶Lab 01-E-11:循环链表拆分将一个循环链表按长度均分为两个循环链表,练习循环结构的断开与重连。30~40 分钟01E12 · 第 1 章 · 进阶Lab 01-E-12:循环链表删除指定值在循环链表中删除所有值为给定目标的节点,练习循环结构的遍历与删除边界。30~40 分钟01E13 · 第 1 章 · 进阶Lab 01-E-13:静态链表有序插入用游标数组模拟单链表,练习静态空间中的节点分配、链接修改与有序维护。35~50 分钟01E14 · 第 1 章 · 进阶Lab 01-E-14:静态链表逆置在不借助辅助数组的前提下,通过修改游标完成静态链表的逆置。25~40 分钟01E15 · 第 1 章 · 进阶Lab 01-E-15:静态链表合并两个有序表用静态链表实现两个有序序列的合并,练习游标级别的链接拼接与边界处理。35~50 分钟01P01 · 第 1 章 · 综合Lab 01-P-01:线性表双实现与工作负载评测器在统一 List ADT 下实现动态顺序表和双向循环链表,用可复现工作负载完成正确性校验、成本测量与工程选型。5~7 小时01T06 · 第 1 章 · 基础~进阶Lab 01-T-06:线性表理论大题训练15 道线性表理论大题,训练算法设计、不变量证明、复杂度分析和结点所有权判断。225~270 分钟CHAPTER
栈与队列
02T01 · 第 2 章 · 基础~进阶Lab 02-T-01:栈选择题精练用 10 道选择题巩固栈的 LIFO 语义、空栈判定、括号匹配与复杂度分析。35~50 分钟02T02 · 第 2 章 · 基础~进阶Lab 02-T-02:队列选择题精练用 10 道选择题巩固队列的 FIFO 语义、循环下标、链队列边界、复杂度与工程选型。35~50 分钟02E01 · 第 2 章 · 基础Lab 02-E-01:验证栈序列按给定入栈顺序模拟栈,判断目标出栈序列是否合法,并定位第一个未匹配位置。35~50 分钟02E02 · 第 2 章 · 进阶Lab 02-E-02:最小栈实现支持常数时间最小值查询的栈,正确维护重复最小值和空栈失败语义。45~60 分钟02E03 · 第 2 章 · 基础Lab 02-E-03:最近请求计数器使用队列维护递增时间流中的滑动窗口,计算最近 3000 时间单位内的请求数量。30~45 分钟02E04 · 第 2 章 · 进阶Lab 02-E-04:设计循环队列用空出一个物理槽位的循环数组实现固定容量队列,覆盖判空判满和下标环绕。60~90 分钟02E05 · 第 2 章 · 进阶Lab 02-E-05:用栈实现队列使用输入栈和输出栈实现先进先出队列,掌握延迟转移与摊还复杂度。45~60 分钟02E06 · 第 2 章 · 进阶Lab 02-E-06:设计循环双端队列使用循环数组实现双端队列,在固定容量内完成两端插入、删除和双向环绕。60~90 分钟02E07 · 第 2 章 · 进阶Lab 02-E-07:滑动窗口最大值使用单调队列在线性时间内求出每个固定长度窗口的最大值。45~60 分钟02E08 · 第 2 章 · 进阶Lab 02-E-08:柱状图中最大的矩形使用单调栈确定每根柱子的左右边界,并计算最大矩形面积。60~75 分钟02P01 · 第 2 章 · 综合Lab 02-P-01:可撤销浏览器——栈的综合应用用双栈导航与命令栈撤销重做,实现一个支持前进/后退与 Undo/Redo 的可撤销浏览器内核。300~420 分钟02P02 · 第 2 章 · 综合Lab 02-P-02:超市收银模拟——队列的综合应用用多队列模拟收银台排队,实现选队策略、时间步推进与统计,验证先进先出语义。300~420 分钟02P03 · 第 2 章 · 综合Lab 02-P-03:停车场管理——栈与队列的综合应用用栈模拟内部车道、队列模拟门外便道,实现带倒车、补位与统计的停车场调度系统。300~420 分钟02T03 · 第 2 章 · 基础~进阶Lab 02-T-03:栈与队列综合理论题20 道选择题与 5 道理论大题,综合训练栈序列约束、表达式、共享栈、循环链队列与受限双端队列。100~130 分钟02P04 · 第 2 章 · 综合Lab 02-P-04:表达式求值器把有界栈、分词器、中缀转后缀与求值模块链接成同一个程序,分别测评模块并用真实集成测试检查工程。240~360 分钟02E09 · 第 2 章 · 基础Lab 02-E-09:括号匹配用栈验证多种括号的嵌套关系。35~50 分钟02E10 · 第 2 章 · 基础Lab 02-E-10:逆波兰表达式求值用操作数栈处理二元运算与非法表达式。35~50 分钟02E11 · 第 2 章 · 基础Lab 02-E-11:中缀表达式转后缀用调度场算法处理优先级、左结合和括号。35~50 分钟02E12 · 第 2 章 · 基础Lab 02-E-12:下一个更大元素维护单调递减候选栈,求右侧第一个严格更大值。35~50 分钟02E13 · 第 2 章 · 基础Lab 02-E-13:下一个更小元素维护单调递增候选栈,求右侧第一个严格更小值。35~50 分钟02E14 · 第 2 章 · 基础Lab 02-E-14:农夫抓牛用 FIFO 队列按层扩散,求单位代价状态转移的最短步数。35~50 分钟02E15 · 第 2 章 · 基础Lab 02-E-15:Josephus 出列顺序用循环队列模拟报数与出列。35~50 分钟02E16 · 第 2 章 · 基础Lab 02-E-16:队列生成二进制数用 FIFO 队列按数值顺序生成二进制表示。35~50 分钟02E17 · 第 2 章 · 基础Lab 02-E-17:双端队列回文检查从两端收缩比较字符,判断字符串是否回文。35~50 分钟02E18 · 第 2 章 · 基础Lab 02-E-18:反转队列前 K 个元素借助栈反转队头前缀并保持剩余元素相对顺序。35~50 分钟02E19 · 第 2 章 · 基础Lab 02-E-19:仅用辅助栈排序用一个辅助栈完成整数序列的升序输出。35~50 分钟02E20 · 第 2 章 · 基础Lab 02-E-20:股票价格跨度用单调栈计算连续不高于当天价格的天数。35~50 分钟CHAPTER
字符串与数组
03T01 · 第 3 章 · 基础Lab 03-T-01:串的基础选择题精练用 15 道选择题巩固串的定义与术语、ADT 与基本操作、三种存储表示,题目标注出处或标记为巩固题。30~40 分钟03T02 · 第 3 章 · 基础~进阶Lab 03-T-02:模式匹配选择题精练用 15 道选择题巩固朴素匹配与 KMP 的指针行为、复杂度、next/nextval、比较次数与考研真题应用。30~45 分钟03T03 · 第 3 章 · 基础Lab 03-T-03:数组与矩阵选择题精练用 12 道选择题(含王道与 408 真题)巩固数组的定义与寻址、对称/三角/三对角矩阵的压缩存储,以及稀疏矩阵的三元组与十字链表表示。25~35 分钟03T04 · 第 3 章 · 基础Lab 03-T-04:广义表选择题精练用 10 道选择题巩固广义表的递归定义、表头表尾、长度深度与存储结构。25~35 分钟03E01 · 第 3 章 · 进阶Lab 03-E-01:KMP 模式匹配(首次出现位置)用 KMP 求模式串在主串中首次出现的位置,练习 next 数组构造与匹配指针不回退。45~60 分钟03E02 · 第 3 章 · 进阶Lab 03-E-02:next 与 nextval 数组推导输入模式串,输出 next 与 nextval 数组,掌握 KMP 失配回退的两种约定。45~60 分钟03E03 · 第 3 章 · 进阶Lab 03-E-03:朴素匹配与 KMP 比较次数统计朴素匹配与 KMP 匹配阶段的字符比较次数,用数据对比 O(n·m) 与 O(n+m)。60~90 分钟03E04 · 第 3 章 · 进阶Lab 03-E-04:串的非重叠替换 Replace实现 Replace(S, T, V):把 S 中所有非重叠的 T 替换为 V,组合定位与拼接操作。60~90 分钟03E05 · 第 3 章 · 基础Lab 03-E-05:UTF-8 串长与字符数按 UTF-8 首字节规则统计字节数与字符数,验证'串长不等于字节数'。30~45 分钟03E06 · 第 3 章 · 进阶Lab 03-E-06:广义表的表头与表尾解析广义表的括号表示,实现 Head 与 Tail 操作并序列化结果,体会表尾比直觉多一层括号。45~60 分钟03E07 · 第 3 章 · 基础Lab 03-E-07:广义表的深度解析广义表的括号表示,用递归计算深度,体会递归定义如何直接对应递归算法。30~45 分钟03E08 · 第 3 章 · 基础Lab 03-E-08:三对角矩阵压缩与取值把三对角矩阵按 k=2i+j 压缩到一维数组,练习特殊矩阵的下标换算与随机取值。30~45 分钟03E09 · 第 3 章 · 基础Lab 03-E-09:多维数组行优先寻址由多维数组的各维长度与下标推导行优先的一维偏移量,理解多维下标到一维地址的映射。30~45 分钟03E10 · 第 3 章 · 基础Lab 03-E-10:串的块链存储与结点定位按块链存储的分块方式定位第 i 个字符所在结点与块内偏移,并统计结点总数与填充槽位。30~45 分钟03E11 · 第 3 章 · 进阶Lab 03-E-11:KMP 全部匹配位置(允许重叠)在 KMP 匹配成功之后继续滑动模式串,统计主串中所有允许重叠的出现位置。45~60 分钟03E12 · 第 3 章 · 进阶Lab 03-E-12:最小循环节与周期用一个串的最长公共前后缀长度求出它的最短循环节与重复次数,并区分“循环节”与“周期函数”两个不同概念。45~60 分钟03E13 · 第 3 章 · 基础Lab 03-E-13:对称矩阵压缩存储与取值把 n 阶对称矩阵的下三角按行优先压进一维数组,并按 k = i(i+1)/2 + j + 1 回答取值查询。40~55 分钟03E14 · 第 3 章 · 进阶Lab 03-E-14:稀疏矩阵三元组快速转置用 num 与 cpot 一次扫描完成稀疏矩阵三元组表的快速转置,输出列位置表与转置后的三元组。50~70 分钟03E15 · 第 3 章 · 基础Lab 03-E-15:广义表的长度与结点计数解析广义表的括号表示,统计顶层元素个数、全表递归原子总数与内部子表结点数。45~60 分钟03E16 · 第 3 章 · 基础Lab 03-E-16:定长顺序串的插入与删除在定长顺序串上按下标插入与删除:超容量时截断丢弃,删除越界时删到末尾,并统计被丢弃与被删除的字符总数。40~55 分钟03E17 · 第 3 章 · 进阶Lab 03-E-17:KMP 与 nextval 的比较次数按统一伪代码统计朴素匹配、KMP 与 KMP+nextval 的字符比较次数,量化 nextval 到底省下了哪几次比较。50~70 分钟03E18 · 第 3 章 · 基础Lab 03-E-18:上三角矩阵压缩存储与取值把 n 阶矩阵的上三角按行优先压进一维数组,下三角不存储、值恒为常量 c,并按 k = i(2n−i+1)/2 + (j−i) + 1 回答取值查询。40~55 分钟03E19 · 第 3 章 · 基础Lab 03-E-19:行优先与列优先寻址(含字节地址)由各维长度与下标同时推导行优先、列优先的一维偏移量,并按元素字节数换算成真实字节地址。40~55 分钟03E20 · 第 3 章 · 进阶Lab 03-E-20:Head/Tail 复合运算求值对广义表依次执行 Head/Tail 操作序列并求值,理清“表尾一定是一张表”带来的括号层数变化。50~70 分钟03P01 · 第 3 章 · 综合Lab 03-P-01:串匹配与文本处理引擎在统一 Matcher 契约下实现朴素匹配、KMP 与 nextval,用文本处理引擎和固定 seed 工作负载完成确定性比较与工程选型。5~7 小时03P02 · 第 3 章 · 综合Lab 03-P-02:稀疏矩阵运算库在统一契约下实现稀疏矩阵的三元组转置、加法与乘法,用固定 seed 工作负载比较稀疏与稠密场景,并给出带前提的存储选型。5~7 小时03T05 · 第 3 章 · 基础~进阶Lab 03-T-05:数组与广义表理论大题训练5 道数组与广义表理论大题,训练寻址推导、特殊矩阵压缩、稀疏矩阵转置和递归结构分析。100~130 分钟CHAPTER
树与二叉树
04T01 · 第 4 章 · 基础Lab 04-T-01:二叉树基础(性质与存储)理论题精练通过 20 道选择题和 5 道综合题,巩固二叉树基础(性质与存储)的概念、性质与解题方法。90~120 分钟04T02 · 第 4 章 · 基础Lab 04-T-02:前序遍历理论题精练通过 12 道选择题和 1 道综合题,巩固前序遍历的概念、性质与解题方法。50~70 分钟04T03 · 第 4 章 · 基础Lab 04-T-03:中序遍历理论题精练通过 11 道选择题和 3 道综合题,巩固中序遍历的概念、性质与解题方法。60~90 分钟04T04 · 第 4 章 · 基础Lab 04-T-04:后序遍历理论题精练通过 14 道选择题(源文档无综合题),巩固后序遍历的概念、性质与解题方法。35~50 分钟04T05 · 第 4 章 · 基础Lab 04-T-05:层序遍历理论题精练通过 8 道选择题(源文档无综合题),巩固层序遍历的概念、性质与解题方法。25~35 分钟04T06 · 第 4 章 · 基础Lab 04-T-06:由遍历序列构造二叉树理论题精练通过 18 道选择题和 2 道综合题,巩固由遍历序列构造二叉树的概念、性质与解题方法。70~100 分钟04T07 · 第 4 章 · 基础Lab 04-T-07:线索二叉树理论题精练通过 14 道选择题(源文档无综合题),巩固线索二叉树的概念、性质与解题方法。35~50 分钟04T08 · 第 4 章 · 基础Lab 04-T-08:树与森林理论题精练通过 20 道选择题和 5 道综合题,巩固树与森林的概念、性质与解题方法。90~120 分钟04E01 · 第 4 章 · 基础Lab 04-E-01:多叉树孩子兄弟表示法:叶子节点统计区分孩子与兄弟链接,用一次遍历统计一般树的叶子。45~60 分钟04E02 · 第 4 章 · 基础Lab 04-E-02:多叉树孩子兄弟表示法:树的高度在孩子兄弟表示中按原树层次计算高度,避免把兄弟链算成向下路径。45~60 分钟04E03 · 第 4 章 · 入门Lab 04-E-03:二叉树的完全性检验利用层序遍历与空节点连续性判定,检验一棵二叉树是否为完全二叉树。20~30 分钟04E04 · 第 4 章 · 基础Lab 04-E-04:二叉树的最小深度在单侧子树和空树条件下正确识别第一片叶子。45~60 分钟04E05 · 第 4 章 · 基础Lab 04-E-05:合并二叉树按结构位置合并两棵树,完整保留仅存在于一侧的子树。45~60 分钟04E06 · 第 4 章 · 基础Lab 04-E-06:左叶子之和结合父子方向与叶子判定,计算可能包含负数的左叶子和。45~60 分钟04E07 · 第 4 章 · 入门Lab 04-E-07:二叉树的前序遍历实现二叉树的前序遍历(根 -> 左 -> 右),掌握递归与显式栈迭代两种经典 DFS 解法。15~20 分钟04E08 · 第 4 章 · 基础Lab 04-E-08:二叉树的中序遍历(迭代实现)用显式栈模拟中序遍历,正确处理没有右子树时的回退。45~60 分钟04E09 · 第 4 章 · 入门Lab 04-E-09:二叉树的层序与锯齿形遍历使用队列与双端队列完成二叉树的标准分层输出与锯齿形反转输出。20~30 分钟04E10 · 第 4 章 · 入门Lab 04-E-10:二叉树的右视图利用广度优先搜索或右优先深度优先搜索获取二叉树的右视图。20~30 分钟04E11 · 第 4 章 · 基础Lab 04-E-11:二叉树的层平均值固定每一层的范围,避免整数除法和层和溢出。45~60 分钟04E12 · 第 4 章 · 基础Lab 04-E-12:叶子相似的树比较按从左到右排列的叶子序列,保留次序与重复次数。45~60 分钟04E13 · 第 4 章 · 进阶Lab 04-E-13:从前序与中序遍历构造二叉树通过前序确定根节点与中序划分区间的区间分治思想恢复二叉树。25~35 分钟04E14 · 第 4 章 · 进阶Lab 04-E-14:从中序与后序遍历构造二叉树通过后序确定根节点与中序划分区间的镜像分治恢复二叉树。25~35 分钟04E15 · 第 4 章 · 进阶Lab 04-E-15:中序线索化在保留真实孩子的前提下补齐中序前驱、后继线索及标志。45~60 分钟04E16 · 第 4 章 · 进阶Lab 04-E-16:中序线索树查找后继与遍历利用已有线索求后继,用常数辅助空间完成中序遍历。45~60 分钟04E17 · 第 4 章 · 进阶Lab 04-E-17:森林转二叉树将有序森林的孩子数组转换成完整孩子兄弟二叉链表。45~60 分钟04E18 · 第 4 章 · 进阶Lab 04-E-18:二叉树转森林从二叉链接恢复有序森林的全部根与孩子数组。45~60 分钟04E19 · 第 4 章 · 进阶Lab 04-E-19:树的后根遍历按原有兄弟次序完成一般树的后根遍历,区别于二叉树后序。45~60 分钟04E20 · 第 4 章 · 进阶Lab 04-E-20:二叉树的最大宽度利用完全二叉树的父子编号性质计算二叉树的最大宽度。25~35 分钟04E21 · 第 4 章 · 入门Lab 04-E-21:对称二叉树判定通过双树镜像下潜递归比较判定一棵二叉树是否镜像对称。15~25 分钟04E22 · 第 4 章 · 进阶Lab 04-E-22:二叉树展开为链表通过原地指针变换将二叉树按先序遍历顺序展开为单向右链表。20~30 分钟04E23 · 第 4 章 · 进阶Lab 04-E-23:路径总和 II(收集所有路径)通过显式回溯收集所有满足目标和的根到叶完整路径。25~35 分钟04E24 · 第 4 章 · 进阶Lab 04-E-24:二叉树的坡度在一次后序处理中同时维护子树和与全树坡度。45~60 分钟04E25 · 第 4 章 · 进阶Lab 04-E-25:二叉树的最近公共祖先利用后序遍历自底向上汇聚左右子树目标节点状态,求解最近公共祖先 LCA。25~35 分钟04E26 · 第 4 章 · 进阶Lab 04-E-26:二叉树的直径掌握自底向上后序递归思想,通过单侧深度汇报与全局跨根路径更新计算二叉树直径。20~30 分钟04E27 · 第 4 章 · 挑战Lab 04-E-27:二叉树的最长之字形路径通过树形动态规划,计算二叉树中最长边方向交替的向下路径。40~55 分钟04E28 · 第 4 章 · 挑战Lab 04-E-28:科研团队组建在树形依赖结构上做背包动态规划,求满足依赖约束的最大价值选择方案。50~70 分钟04E29 · 第 4 章 · 挑战Lab 04-E-29:网络最优选址利用换根动态规划,高效计算以每个节点为根时的全树距离和。45~60 分钟04E30 · 第 4 章 · 挑战Lab 04-E-30:通信基站选址利用树的直径性质,求允许中心落在边上时的最小覆盖半径与绝对中心位置。45~60 分钟04E31 · 第 4 章 · 挑战Lab 04-E-31:树的同构判定通过求重心与规范编码,判定两棵无根树是否同构。55~75 分钟CHAPTER
树的应用
05T01 · 第 5 章 · 基础Lab 05-T-01:森林与二叉树转换题精练通过 16 道选择题和 1 道综合题,巩固森林与二叉树的转换的概念、性质与解题方法。50~70 分钟05T02 · 第 5 章 · 基础Lab 05-T-02:树与森林遍历题精练通过 9 道选择题(本组素材无综合题),巩固树和森林的遍历的概念、性质与解题方法。25~35 分钟05T03 · 第 5 章 · 基础Lab 05-T-03:哈夫曼树与编码题精练通过 20 道选择题和 5 道综合题,巩固哈夫曼树与编码的概念、性质与解题方法。90~120 分钟05T04 · 第 5 章 · 基础Lab 05-T-04:并查集题精练通过 9 道选择题(本组素材无综合题),巩固并查集的概念、性质与解题方法。25~35 分钟05T05 · 第 5 章 · 基础Lab 05-T-05:堆题精练通过 13 道选择题和 3 道综合题,巩固堆的概念、性质与解题方法。60~90 分钟05E01 · 第 5 章 · 入门Lab 05-E-01:二叉搜索树的插入与查找实现二叉搜索树(BST)的基本操作:插入新节点与查找指定值。15~25 分钟05E02 · 第 5 章 · 进阶Lab 05-E-02:二叉搜索树的删除实现二叉搜索树(BST)的节点删除操作,并输出删除后的中序遍历。25~40 分钟05E03 · 第 5 章 · 进阶Lab 05-E-03:验证 BST 先序遍历序列给定一个整数序列,判断它是否可以作为某棵 BST 的先序遍历序列。20~35 分钟05E04 · 第 5 章 · 进阶Lab 05-E-04:BST 中第 k 小的元素在二叉搜索树中高效查找第 k 小的元素,支持多次查询。25~40 分钟05E05 · 第 5 章 · 挑战Lab 05-E-05:AVL 树的插入与平衡实现 AVL 树的插入操作,包括四种旋转(LL、RR、LR、RL),输出最终树的层序遍历。40~60 分钟05E06 · 第 5 章 · 进阶Lab 05-E-06:将二叉搜索树变平衡中序遍历提取有序序列,取中点重建高度平衡的二叉搜索树。20~35 分钟05E07 · 第 5 章 · 基础Lab 05-E-07:祭坛三元组排序后枚举中间元素,用二分统计两侧合法方案数。15~25 分钟05E08 · 第 5 章 · 入门Lab 05-E-08:最小堆的实现从零实现基于数组的最小堆,支持插入、删除最小值、查询最小值操作。20~30 分钟05E09 · 第 5 章 · 进阶Lab 05-E-09:数据流中的中位数使用双堆技巧(最大堆 + 最小堆)动态维护数据流的中位数。25~40 分钟05E10 · 第 5 章 · 进阶Lab 05-E-10:任务调度器使用贪心 + 优先队列安排任务,计算完成所有任务所需的最少时间单位。30~45 分钟05E11 · 第 5 章 · 基础Lab 05-E-11:前 K 个高频元素哈希计数配合大小为 K 的小根堆,求出现次数最多的 K 个值。15~25 分钟05E12 · 第 5 章 · 进阶Lab 05-E-12:吃苹果用到期日最小堆模拟每天优先吃最先腐烂的苹果。20~30 分钟05E13 · 第 5 章 · 进阶Lab 05-E-13:可以到达的最远建筑用大小为 L 的小根堆动态保留最大的 L 个高度差,贪心分配梯子与砖块。25~40 分钟05E14 · 第 5 章 · 提高Lab 05-E-14:蚯蚓用三个单调队列维护“原位/切出两段”的蚯蚓,配合偏移量实现惰性堆。30~45 分钟05E15 · 第 5 章 · 入门Lab 05-E-15:哈夫曼编码构建哈夫曼树,生成各字符的编码,并计算编码后的总长度。20~35 分钟05E16 · 第 5 章 · 进阶Lab 05-E-16:最优合并问题将多个有序表合并为一个有序表,每次只能合并两个表,求最小合并代价。20~35 分钟05E17 · 第 5 章 · 挑战Lab 05-E-17:k 叉哈夫曼树拓展哈夫曼编码到 k 叉树,每次合并 k 个节点,求最小带权路径长度。35~50 分钟05E18 · 第 5 章 · 入门Lab 05-E-18:并查集的实现实现带路径压缩和按秩合并的并查集,支持合并集合与查询归属。15~25 分钟05E19 · 第 5 章 · 进阶Lab 05-E-19:动态连通性查询在并查集上维护连通分量数量,支持动态加边与查询当前连通分量数。20~35 分钟05E20 · 第 5 章 · 挑战Lab 05-E-20:食物链使用带权并查集维护节点间的相对关系,判断陈述的真伪。经典扩展域并查集问题。40~60 分钟05E21 · 第 5 章 · 挑战Lab 05-E-21:银河英雄传说使用带权并查集维护队列中的相对距离,支持合并队列与查询两舰之间的距离。45~60 分钟05E22 · 第 5 章 · 基础Lab 05-E-22:亲戚使用并查集维护亲戚关系,快速回答任意两人是否同族的询问。10~20 分钟05E23 · 第 5 章 · 基础Lab 05-E-23:冗余连接在无向图中逐条加边并用并查集判环,找出使图产生环的那条边。15~25 分钟05E24 · 第 5 章 · 进阶Lab 05-E-24:关押罪犯用扩展域并查集维护'不能同狱'约束,贪心求解同狱最大怨念值的最小值。25~40 分钟05E25 · 第 5 章 · 进阶Lab 05-E-25:星球大战把删点操作倒序转化为加点,用逆向并查集维护连通块数量。25~40 分钟05E26 · 第 5 章 · 进阶Lab 05-E-26:B 树的插入实现 B 树的插入操作,包括节点分裂,输出插入完成后 B 树的层序遍历。40~60 分钟05E27 · 第 5 章 · 挑战Lab 05-E-27:B+ 树的范围查询模拟 B+ 树的索引结构,支持按顺序插入关键字和区间查询,输出范围内关键字数量。40~60 分钟CHAPTER
图的基础与存储
06T01 · 第 6 章 · 基础~进阶Lab 06-T-01:图的基本概念选择题精练用 10 道选择题巩固图的分类、度、路径、连通性与稀疏性判断。35~50 分钟06T02 · 第 6 章 · 基础~进阶Lab 06-T-02:图的存储结构选择题精练用 20 道选择题比较图表示的语义、复杂度、转换与工程选型。65~80 分钟06E01 · 第 6 章 · 基础Lab 06-E-01:图的度数与奇偶性统计统计无向图的度或有向图的入度与出度,正确处理自环和平行边,并用握手定理检查结果。45~60 分钟06E02 · 第 6 章 · 进阶Lab 06-E-02:连通三元组的最小度数用邻接矩阵识别无向图中的三角形,并计算三元组内部顶点与外部顶点之间的边数。60~90 分钟06E03 · 第 6 章 · 基础Lab 06-E-03:不邻接植花用邻接表保存花园之间的双向路径,利用最大度数为 3 的条件证明四种花足够,并构造确定的合法方案。45~60 分钟06T03 · 第 6 章 · 基础~进阶Lab 06-T-03:图的遍历与连通性选择题精练用 12 道选择题检查单源与完整遍历、无向连通分量、弱连通、强连通和 Kosaraju 算法。45~60 分钟06T04 · 第 6 章 · 基础~进阶Lab 06-T-04:图基础综合理论大题训练12 道图基础书面综合题,强化表示转换、遍历不变量、连通性证明与方法选型。180~220 分钟06E04 · 第 6 章 · 基础Lab 06-E-04:星型图的中心利用星型图中任意两条边的公共端点确定中心。35~60 分钟06E05 · 第 6 章 · 基础Lab 06-E-05:小镇法官用入度和出度同时刻画“被所有其他人信任且不信任任何人”。35~60 分钟06E06 · 第 6 章 · 基础Lab 06-E-06:邻接矩阵建图与相邻查询构造对称邻接矩阵,并用常数时间回答两点是否直接相邻。35~60 分钟06E07 · 第 6 章 · 基础Lab 06-E-07:邻接表的构建与规范化输出在稀疏图中构建双向邻接记录,并输出排序后的邻接表。35~60 分钟06E08 · 第 6 章 · 基础Lab 06-E-08:有向图的转置反转全部有向边,在规范化输出中保留自环和平行边。35~60 分钟06E09 · 第 6 章 · 进阶Lab 06-E-09:图的三种表示转换从边集、矩阵或邻接表读入同一张图,并输出三种规范表示。75~100 分钟06E10 · 第 6 章 · 基础Lab 06-E-10:Graph ADT:边的增删查封装简单图的动态边操作,并维护无向图的双向一致性。35~60 分钟06E11 · 第 6 章 · 基础Lab 06-E-11:最大网络秩枚举城市对,用度数求道路并集大小,并消除共享道路的重复计数。35~60 分钟06E12 · 第 6 章 · 基础Lab 06-E-12:寻找图中是否存在路径在无向图中进行单源遍历,判断终点是否属于起点的连通分量。35~60 分钟06E13 · 第 6 章 · 基础Lab 06-E-13:钥匙和房间把钥匙看作有向边,区分拥有钥匙与实际能够取得钥匙。35~60 分钟06E14 · 第 6 章 · 基础Lab 06-E-14:省份数量从对称连接矩阵出发,统计包含孤立城市的全部连通分量。35~60 分钟06E15 · 第 6 章 · 基础Lab 06-E-15:无向图连通分量标号完整遍历无向图,为所有顶点分配稳定的连通分量编号。35~60 分钟06E16 · 第 6 章 · 基础Lab 06-E-16:连通分量规模统计对每个连通分量统计顶点数,并按规模降序输出。35~60 分钟06E17 · 第 6 章 · 基础Lab 06-E-17:有向图的弱连通分量忽略边的方向后计算分量,区分弱连通与有向可达。35~60 分钟06E18 · 第 6 章 · 基础Lab 06-E-18:无法互达的点对数按连通分量统计跨分量无序点对,避免二次枚举并处理 64 位答案。35~60 分钟06E19 · 第 6 章 · 基础Lab 06-E-19:完全连通分量计数在分量内部比较实际边数与完全图边数,识别全部完全分量。35~60 分钟06E20 · 第 6 章 · 基础Lab 06-E-20:Building Roads以最少新增道路连接所有城市,并构造确定的最优方案。35~60 分钟06E21 · 第 6 章 · 进阶Lab 06-E-21:Flight Routes Check通过原图和转置图的两次遍历判断强连通,并给出不可达见证。75~100 分钟06E22 · 第 6 章 · 进阶Lab 06-E-22:Planets and Kingdoms用 Kosaraju 划分全部强连通分量,并消除遍历顺序对编号的影响。75~100 分钟06E23 · 第 6 章 · 进阶Lab 06-E-23:SCC 凝聚图构造将每个强连通分量缩成一个点,构造无自环、无重边的有向无环图。75~100 分钟CHAPTER
图的遍历与应用
07T01 · 第 7 章 · 基础~进阶(含拓展题)Lab 07-T-01:DFS 与 BFS 选择题精练通过 15 道选择题巩固 DFS 与 BFS 的辅助结构、访问顺序、树高、边分类、复杂度与典型应用。50~70 分钟07T02 · 第 7 章 · 基础~拔高Lab 07-T-02:最小生成树选择题精练用 20 道选择题巩固最小生成树的定义与性质、切分定理与环性质、Prim/Kruskal 算法与复杂度,以及选型与边界辨析。40~60 分钟07T03 · 第 7 章 · 基础~拔高Lab 07-T-03:最短路径选择题精练用 26 道选择题巩固最短路径的松弛主线、核心性质、算法选型与负权/负环辨析,并复用正文例图做步骤模拟。40~60 分钟07E01 · 第 7 章 · 入门Lab 07-E-01:DFS 遍历与时间戳实现递归 DFS 并输出完整 DFS 森林中每个顶点的发现时间与完成时间。45~60 分钟07E02 · 第 7 章 · 入门Lab 07-E-02:显式栈 DFS用显式栈实现与递归升序一致的 DFS 访问顺序,在百万级深图上避免递归爆栈。60~90 分钟07E03 · 第 7 章 · 基础Lab 07-E-03:DFS 边分类统计为每条边保存独立编号并排序邻接表,完成DFS 边分类统计的实现与边界验证。60~90 分钟07E04 · 第 7 章 · 进阶Lab 07-E-04:欧拉回路判定统计度数,自环必须计算两次,完成欧拉回路判定的实现与边界验证。60~90 分钟07E05 · 第 7 章 · 进阶Lab 07-E-05:哥尼斯堡七桥问题检查奇度条件并确定规范起点,完成哥尼斯堡七桥问题的实现与边界验证。60~90 分钟07E06 · 第 7 章 · 基础Lab 07-E-06:课程表将输入关系转换为 b→a 并统计入度,完成课程表的实现与边界验证。60~90 分钟07E07 · 第 7 章 · 基础Lab 07-E-07:课程表 II构建 b→a 的邻接表和入度,完成课程表 II的实现与边界验证。60~90 分钟07E08 · 第 7 章 · 进阶Lab 07-E-08:找到最终的安全状态构建反向图并记录原图出度,完成找到最终的安全状态的实现与边界验证。60~90 分钟07E09 · 第 7 章 · 进阶Lab 07-E-09:最大食物链计数源点计数为 1,其余为 0,完成最大食物链计数的实现与边界验证。60~90 分钟07E10 · 第 7 章 · 挑战Lab 07-E-10:并行课程 III把每门课的初始完成时刻设为自身耗时,完成并行课程 III的实现与边界验证。90~120 分钟07E11 · 第 7 章 · 挑战Lab 07-E-11:关键路径分析(AOE 网)正向拓扑求每个事件的最早发生时刻,完成关键路径分析(AOE 网)的实现与边界验证。90~120 分钟07E12 · 第 7 章 · 基础Lab 07-E-12:最小生成树实现 Kruskal 算法求无向图的最小生成树,输出边权之和,并正确处理多重边与自环。120~150 分钟07E13 · 第 7 章 · 基础Lab 07-E-13:最低成本连通所有城市按权重升序排序道路,完成最低成本连通所有城市的实现与边界验证。60~90 分钟07E14 · 第 7 章 · 进阶Lab 07-E-14:连接所有点的最小费用维护每个未选点到已选集合的最小曼哈顿距离,完成连接所有点的最小费用的实现与边界验证。60~90 分钟07E15 · 第 7 章 · 进阶Lab 07-E-15:最小体力消耗路径每对右邻、下邻格子只建一条无向边,完成最小体力消耗路径的实现与边界验证。60~90 分钟07E16 · 第 7 章 · 入门Lab 07-E-16:Dijkstra 逐轮推演用朴素 O(n²) Dijkstra 复现考研手推表:每轮选出距离最小的未确定顶点,输出最终距离、前驱与确定顺序。60~75 分钟07E17 · 第 7 章 · 基础Lab 07-E-17:朴素 Dijkstra 与路径还原用邻接矩阵实现考研教材标准的 O(n²) Dijkstra,回答多个目标的距离与完整路径查询。75~90 分钟07E18 · 第 7 章 · 基础Lab 07-E-18:网络延迟时间LeetCode 743:求单源最短路径的最大值——信号传遍全网所需时间,不可达时输出 -1。75~90 分钟07E19 · 第 7 章 · 基础Lab 07-E-19:Bellman-Ford 与负环用 n-1 轮全边松弛处理负权单源最短路,再用第 n 轮检测从源点可达的负环。90~120 分钟07E20 · 第 7 章 · 基础Lab 07-E-20:Floyd 全源最短路径用三重循环预计算任意点对的最短距离,用后继矩阵还原路径,回答多点对查询。90~120 分钟07E21 · 第 7 章 · 进阶Lab 07-E-21:紧急救援PAT 1003 经典变形:Dijkstra 上同时维护最短路径条数与最大救援队数,一条路径两个判据。90~120 分钟07E22 · 第 7 章 · 进阶Lab 07-E-22:虫洞(Wormholes)道路展开成两条正权边,虫洞转成一条负权边,完成虫洞(Wormholes)的实现与边界验证。60~90 分钟07E23 · 第 7 章 · 进阶Lab 07-E-23:A* 网格寻路检查端点,初始化 g 与最小堆 (f,g,顶点),完成A* 网格寻路的实现与边界验证。60~90 分钟07E24 · 第 7 章 · 进阶Lab 07-E-24:启发式函数有效性判定反向建图,从 t 求所有点到 t 的距离,完成启发式函数有效性判定的实现与边界验证。60~90 分钟07E25 · 第 7 章 · 挑战Lab 07-E-25:八数码问题(A*)比较初态与目标的非零数字逆序奇偶,无解立即返回,完成八数码问题(A*)的实现与边界验证。90~120 分钟07E26 · 第 7 章 · 基础Lab 07-E-26:BFS 二分图判定用 BFS 黑白染色判定无向图是否为二分图,冲突时输出首次发现的冲突边。60~90 分钟07E27 · 第 7 章 · 进阶Lab 07-E-27:二分图最大匹配(匈牙利)维护每个右顶点当前匹配的左顶点,完成二分图最大匹配(匈牙利)的实现与边界验证。60~90 分钟07E28 · 第 7 章 · 进阶Lab 07-E-28:飞行员配对方案邻接表排序去重,完成飞行员配对方案的实现与边界验证。60~90 分钟07E29 · 第 7 章 · 挑战Lab 07-E-29:最大流(Edmonds-Karp)为每条输入边添加容量为 0 的独立反向边,完成最大流(Edmonds-Karp)的实现与边界验证。90~120 分钟07E30 · 第 7 章 · 挑战Lab 07-E-30:最小费用最大流建立独立正反残量边,容量和费用用 long long,完成最小费用最大流的实现与边界验证。90~120 分钟CHAPTER
查找
08T01 · 第 8 章 · 基础~进阶Lab 08-T-01:查找理论选择题精练用 15 道选择题(7 道 408 真题 + 8 道王道习题)巩固顺序查找、分块查找与折半查找的前提、比较次数和判定树形态。35~50 分钟08T02 · 第 8 章 · 基础~进阶Lab 08-T-02:二叉排序树理论题精练用 12 道选择题巩固 BST 的中序有序性、插入构造、查找路径上下界与删除再插入的不变量。30~45 分钟08T03 · 第 8 章 · 基础~进阶Lab 08-T-03:平衡查找树理论题精练用 14 道选择题巩固 AVL 的最少结点递推、旋转调整与红黑树的性质和插入规则。35~50 分钟08E01 · 第 8 章 · 基础Lab 08-E-01:BST 增删查与边界测试实现 BST 的查找、插入与三类删除,用指令序列验证中序有序性与树高不变量。90~120 分钟08P01 · 第 8 章 · 综合Lab 08-P-01:自平衡查找树——AVL 旋转维护与退化对比实现 AVL 树的四种旋转与删除再平衡,用不变量检查与普通 BST 基线对比退化。300~420 分钟08E02 · 第 8 章 · 基础Lab 08-E-02:折半查找首次出现位置在非递减序列上用折半查找回答多次查询,输出目标值首次出现的下标,练习左边界折半与失败判定。30~45 分钟08E03 · 第 8 章 · 进阶Lab 08-E-03:折半查找首末位置在非递减序列上用折半查找回答多次查询,输出目标值首次与末次出现的下标,练习左右边界双折半与失败判定。45~60 分钟08E04 · 第 8 章 · 进阶Lab 08-E-04:数对计数 A−B=C对无序序列统计满足 A−B=C 的有序下标对个数,练习排序后二分计数与 long long 防溢出。45~60 分钟08E05 · 第 8 章 · 基础Lab 08-E-05:有序数组转平衡 BST把严格递增数组按左中点规则递归构造成平衡 BST,并用队列输出层序遍历。30~45 分钟08E06 · 第 8 章 · 基础Lab 08-E-06:验证二叉搜索树自根向下传递上下界校验二叉树是否满足 BST 的严格有序口径,警惕只比较父子结点的局部检查。30~45 分钟08E07 · 第 8 章 · 基础Lab 08-E-07:二叉搜索树的最近公共祖先利用 BST 有序性质从根出发一趟 walk 求两个结点的最近公共祖先,练习把树形问题转化为比较方向的判断。30~45 分钟08E08 · 第 8 章 · 基础Lab 08-E-08:平衡二叉树判断对以邻接表形式给出的任意二叉树做 AVL 平衡条件判定,练习后序自底向上求高度并在失衡时短路返回。30~45 分钟08E09 · 第 8 章 · 提高Lab 08-E-09:【模板】普通平衡树手写带子树大小的 AVL 树完成插入、删除、排名、第 k 小、前驱、后继六种操作,体验自平衡如何撑住 10⁵ 规模与有序插入。90~120 分钟CHAPTER
散列与索引结构
09T01 · 第 9 章 · 基础~进阶Lab 09-T-01:散列与索引选择题精练用 18 道历年 408 选择题复习 B 树、B+ 树与散列表的结构性质、增删调整和平均查找长度。50~80 分钟09E01 · 第 9 章 · 基础Lab 09-E-01:散列表实现与冲突统计实现链地址法与线性探测两种散列表,用探测次数观察堆积并计算成功与失败 ASL。90~120 分钟09P01 · 第 9 章 · 综合Lab 09-P-01:散列索引引擎——冲突策略与再散列大综合实现链地址、线性探测与平方探测三种散列索引,用统一接口与探测次数理解冲突与堆积。300~420 分钟09E02 · 第 9 章 · 基础Lab 09-E-02:去重保首次用散列表对多组整数判重,按首次出现顺序输出去重后的序列,练习期望 O(1) 的“是否出现过”判定。30~45 分钟09E03 · 第 9 章 · 基础Lab 09-E-03:点名状态机用链地址法散列表维护名单与“是否已点到”状态,对每次点名输出 OK / REPEAT / WRONG 三态。30~45 分钟09E04 · 第 9 章 · 基础Lab 09-E-04:学生信息查询以学号字符串为键手写散列索引,对每次学号查询输出学生记录或 No Answer!,讨论直接定址与散列映射的取舍。30~45 分钟09E05 · 第 9 章 · 进阶Lab 09-E-05:设计哈希映射·线性探测手写开放定址哈希映射,用线性探测处理冲突、用墓碑标记完成删除,正确回答多次 put/get/remove。60~90 分钟09E06 · 第 9 章 · 基础Lab 09-E-06:设计哈希集合·链地址手写链地址哈希集合,在桶数被故意压小的条件下处理大量冲突,正确回答多次 add/contains/remove。45~60 分钟09E07 · 第 9 章 · 进阶Lab 09-E-07:字符串哈希计数手写 131 进制字符串散列函数配合链地址法散列表,统计 n 个字符串中不同串的个数。45~60 分钟09E08 · 第 9 章 · 进阶Lab 09-E-08:最长连续序列在可重复的无序整数数组中找出最长的连续整数段,用散列集合实现只从段起点向右扩展的 O(n) 解法。30~45 分钟CHAPTER
排序
10T01 · 第 10 章 · 基础~进阶Lab 10-T-01:插入排序选择题精练用 10 道选择题巩固插入排序的复杂度、稳定性与正确性要点。30~45 分钟10T02 · 第 10 章 · 基础~进阶Lab 10-T-02:选择排序选择题精练用 10 道选择题巩固选择排序的复杂度、稳定性与正确性要点。30~45 分钟10T03 · 第 10 章 · 基础~进阶Lab 10-T-03:冒泡排序选择题精练用 10 道选择题巩固冒泡排序的复杂度、稳定性与正确性要点。30~45 分钟10T04 · 第 10 章 · 基础~进阶Lab 10-T-04:希尔排序选择题精练用 10 道选择题巩固希尔排序的复杂度、稳定性与正确性要点。30~45 分钟10E01 · 第 10 章 · 入门Lab 10-E-01:多关键字排序(奖学金)用结构体多关键字排序解决奖学金排名,练习自定义比较器的优先级链写法。25~35 分钟10E02 · 第 10 章 · 入门Lab 10-E-02:大整数比较(宇宙总统)对超长整数(票数)做大小比较,练习用字符串代替内置整型处理高精度数值。20~30 分钟10E03 · 第 10 章 · 入门Lab 10-E-03:插入排序模板手写插入排序的标准模板,把 n 个整数从小到大排好并输出。15~25 分钟10E04 · 第 10 章 · 基础Lab 10-E-04:插入排序的过程按 AOJ 格式输出插入排序每一步的中间数组,观察元素如何逐步就位。20~30 分钟10E05 · 第 10 章 · 困难Lab 10-E-05:插入排序的在线更新维护每个元素的稳定排名 rank[],单点修改 O(n) 更新、查询 O(1) 回答。40~60 分钟10E06 · 第 10 章 · 入门Lab 10-E-06:选择排序模板手写选择排序模板,把 n 个整数从小到大排序输出。20~30 分钟10E07 · 第 10 章 · 基础Lab 10-E-07:选择排序与交换次数在选择排序中统计交换次数,输出排序结果和交换次数。25~35 分钟10E08 · 第 10 章 · 进阶Lab 10-E-08:稳定排序判定对比冒泡排序与选择排序的稳定性,输出排序结果与是否稳定。30~45 分钟10E09 · 第 10 章 · 进阶Lab 10-E-09:选择排序的交换次数统计选择排序的总交换次数,n 可达 8000,体会交换 O(n) 与比较 O(n²) 的区别。25~40 分钟10E10 · 第 10 章 · 入门Lab 10-E-10:冒泡排序模板手写冒泡排序的完整模板,理清相邻比较与交换的两层循环边界。15~25 分钟10E11 · 第 10 章 · 基础Lab 10-E-11:冒泡排序与交换次数在冒泡排序过程中统计相邻交换的总次数,体会排序趟数与逆序的关系。20~30 分钟10E12 · 第 10 章 · 基础Lab 10-E-12:冒泡排序(含交换计数)AOJ 经典冒泡排序题:先输出排序后的数组,再输出交换次数。20~30 分钟10E13 · 第 10 章 · 进阶Lab 10-E-13:希尔排序与交换次数用 3g+1 增量序列实现希尔排序,统计插入过程中的移动次数并输出排序结果。30~45 分钟10E14 · 第 10 章 · 进阶Lab 10-E-14:希尔排序模板用 3g+1 增量序列写一个希尔排序模板,把整数序列从小到大排序输出。20~30 分钟10P01 · 第 10 章 · 综合Lab 10-P-01:基础排序工作负载评测器在统一 Sorter 接口下实现插入、选择、冒泡、希尔四种排序,用相同工作负载验证稳定性并比较比较/移动代价。300~420 分钟CHAPTER
高效排序与外部排序
11T01 · 第 11 章 · 基础~进阶Lab 11-T-01:归并排序选择题精练用 10 道选择题巩固归并排序的复杂度、稳定性与正确性要点。30~45 分钟11T02 · 第 11 章 · 基础~进阶Lab 11-T-02:快速排序选择题精练用 10 道选择题巩固快速排序的复杂度、稳定性与正确性要点。30~45 分钟11T03 · 第 11 章 · 基础~进阶Lab 11-T-03:堆排序选择题精练用 10 道选择题巩固堆排序的复杂度、稳定性与正确性要点。30~45 分钟11T04 · 第 11 章 · 基础~进阶Lab 11-T-04:计数排序选择题精练用 10 道选择题巩固计数排序的复杂度、稳定性与正确性要点。30~45 分钟11T05 · 第 11 章 · 基础~进阶Lab 11-T-05:桶排序选择题精练用 10 道选择题巩固桶排序的复杂度、稳定性与正确性要点。30~45 分钟11T06 · 第 11 章 · 基础~进阶Lab 11-T-06:基数排序选择题精练用 10 道选择题巩固基数排序的复杂度、稳定性与正确性要点。30~45 分钟11E01 · 第 11 章 · 入门Lab 11-E-01:计数排序(选举学生会)利用小值域用编号当下标实现计数排序,体验非比较排序绕过 O(n log n) 下界。20~30 分钟11E02 · 第 11 章 · 进阶Lab 11-E-02:归并求逆序对在归并排序的合并阶段统计逆序对,把暴力 O(n²) 压到 O(n log n)。30~45 分钟11E03 · 第 11 章 · 进阶Lab 11-E-03:拼接最大数(拼数)用「拼接后比较」的自定义规则排序,练习非数值比较器与贪心正确性。25~35 分钟11E04 · 第 11 章 · 基础Lab 11-E-04:排序模板(归并实现)用归并排序实现 O(n log n) 的稳定排序,掌握分治排序模板。15~25 分钟11E05 · 第 11 章 · 基础Lab 11-E-05:归并排序模板把归并排序写成可直接复用的模板:二分到单个元素再合并,稳定 O(n log n)。15~25 分钟11E06 · 第 11 章 · 进阶Lab 11-E-06:归并排序与比较次数在归并排序中统计比较次数,理解归并排序的中间过程与计数方式。25~35 分钟11E07 · 第 11 章 · 基础Lab 11-E-07:快速排序模板手写快速排序,掌握划分(partition)与分治递归的完整模板。20~30 分钟11E08 · 第 11 章 · 进阶Lab 11-E-08:求第 k 小的数用快速选择(quickselect)在 O(n) 内定位第 k 小元素,避免全排序。30~45 分钟11E09 · 第 11 章 · 进阶Lab 11-E-09:第 k 小整数(去重)排序后去重,再取第 k 小的整数,练习 unique 与不足 k 个时的边界处理。20~30 分钟11E10 · 第 11 章 · 基础Lab 11-E-10:堆排序模板利用堆维护未排序元素的最小值,把堆排序写成模板:每次取堆顶即得到当前最小元素。20~30 分钟11E11 · 第 11 章 · 进阶Lab 11-E-11:最小堆模板用小根堆维护动态集合的最小值,支持插入与「删除并输出堆顶」两类操作。20~30 分钟11E12 · 第 11 章 · 进阶Lab 11-E-12:黑匣子(第 k 小查询)用对顶堆(大根堆 + 小根堆)动态维护第 k 小元素,回答一系列递增 k 的查询。30~45 分钟11E13 · 第 11 章 · 进阶Lab 11-E-13:中位数(对顶堆)用对顶堆把较小的一半和较大的一半分开维护,每次插入后即可 O(1) 取出前缀中位数。30~45 分钟11E14 · 第 11 章 · 入门Lab 11-E-14:明明的随机数(计数排序去重)值域很小时用计数数组一次完成去重和排序,体会「桶下标 = 数值」的计数排序思想。15~25 分钟11E15 · 第 11 章 · 基础Lab 11-E-15:初级桶排序把桶排序退化成最朴素的形式:桶就是计数数组,值域小时一遍扫描完成排序。20~30 分钟11E16 · 第 11 章 · 基础Lab 11-E-16:桶排序模板值域上限提升到 10^6,按值域分桶一次展开,掌握桶排序的通用模板写法。20~30 分钟11E17 · 第 11 章 · 进阶Lab 11-E-17:基数排序模板用 LSD 基数排序配合稳定计数排序,把十进制整数的比较排序换成逐位分配收集。20~30 分钟11E18 · 第 11 章 · 进阶Lab 11-E-18:基数排序的过程逐位观察 LSD 基数排序每轮的结果,理解稳定计数排序如何一步步逼近有序。20~30 分钟CHAPTER
分治与递归
12E01 · 第 12 章 · 基础Lab 12-E-01:Function用记忆化递归实现经典三参数函数,区分定义域裁剪、边界与缓存。45~60 分钟12E02 · 第 12 章 · 基础Lab 12-E-02:幂次方递归输出整数的二进制幂次表示,练习输出型递归的精确定义。45~60 分钟12E03 · 第 12 章 · 基础Lab 12-E-03:南蛮图腾用自相似图形理解递归返回后再组合结果的过程。50~70 分钟12E04 · 第 12 章 · 基础Lab 12-E-04:Pow(x, n)用二分递归把线性次乘法降为对数次乘法,并安全处理最小负指数。40~55 分钟12E05 · 第 12 章 · 基础Lab 12-E-05:赦免战俘在二维方阵上递归处理三个子象限,建立几何分治坐标感。45~65 分钟12E06 · 第 12 章 · 进阶Lab 12-E-06:Secret Cow Code从巨大递归字符串反向映射下标,避免构造指数增长的内容。55~75 分钟12E07 · 第 12 章 · 基础Lab 12-E-07:求第 k 小的数用三路划分快速选择,只递归进入包含目标下标的一侧。55~75 分钟12E08 · 第 12 章 · 基础Lab 12-E-08:Sort an Array完整实现归并排序,重点维护合并阶段的有序区间不变量。50~70 分钟12E09 · 第 12 章 · 进阶Lab 12-E-09:Construct Quad Tree递归压缩二值网格,并用规范前序序列稳定表达树结构。65~85 分钟12E10 · 第 12 章 · 进阶Lab 12-E-10:地毯填补问题用中心 L 形骨牌制造四个同构子问题,练习“先补接口,再递归”。70~95 分钟12E11 · 第 12 章 · 基础Lab 12-E-11:逆序对在归并两个有序区间时统计跨区间逆序对。55~75 分钟12E12 · 第 12 章 · 进阶Lab 12-E-12:Different Ways to Add Parentheses枚举最后执行的运算符,组合左右子表达式的全部结果。60~85 分钟12E13 · 第 12 章 · 进阶Lab 12-E-13:Beautiful Array利用仿射变换保持性质,递归构造确定的漂亮数组。55~75 分钟12E14 · 第 12 章 · 挑战Lab 12-E-14:Reverse Pairs在归并排序中用单调双指针统计 `a[i] > 2*a[j]` 的跨区间数对。70~95 分钟12E15 · 第 12 章 · 挑战Lab 12-E-15:Count of Smaller Numbers After Self归并原下标而不是数值本身,为每个元素累计右侧更小元素数。75~100 分钟12E16 · 第 12 章 · 挑战Lab 12-E-16:Count of Range Sum把区间和转化为前缀和差值,并在归并层用两个滑动边界计数。80~110 分钟CHAPTER
贪心算法
13E01 · 第 13 章 · 基础Lab 13-E-01:盛最多水的容器使用相向双指针和贪心选择求解最大容水量,理解为什么应该移动短板。30~45 分钟13E02 · 第 13 章 · 入门Lab 13-E-02:最长回文串统计字符频次并使用贪心策略构造最长回文串,理解成对字符与中心字符的选择。30~45 分钟13E03 · 第 13 章 · 基础Lab 13-E-03:跳跃游戏维护数组中的最远可达位置,使用正向贪心判断是否能够到达最后一个下标。30~45 分钟13E04 · 第 13 章 · 入门Lab 13-E-04:分发饼干排序孩子的胃口和饼干尺寸,用双指针贪心求最多能满足的孩子数。30~45 分钟13E05 · 第 13 章 · 进阶Lab 13-E-05:无重叠区间按结束时间选择尽可能多的互不重叠区间,再由保留数量计算最少删除数。45~60 分钟13E06 · 第 13 章 · 入门Lab 13-E-06:种花问题扫描花坛空位,练习局部可行的即时种植贪心。30~45 分钟13E07 · 第 13 章 · 入门Lab 13-E-07:柠檬水找零维护零钱面额计数,理解“保留更灵活资源”的贪心选择。30~45 分钟13E08 · 第 13 章 · 入门Lab 13-E-08:K 次取反后最大化的数组和用排序和剩余次数奇偶性最大化数组和。45~60 分钟13E09 · 第 13 章 · 入门Lab 13-E-09:买卖股票的最佳时机维护历史最低价格,在线求一次交易的最大收益。30~45 分钟13E10 · 第 13 章 · 入门Lab 13-E-10:卡车上的最大单元数按单位价值排序,在容量限制下完成贪心装载。30~45 分钟13E11 · 第 13 章 · 进阶Lab 13-E-11:跳跃游戏 II把可达位置划成层,求到终点的最少跳跃次数。45~60 分钟13E12 · 第 13 章 · 进阶Lab 13-E-12:划分字母区间预处理末次位置,用扫描闭合尽可能多的合法片段。45~60 分钟13E13 · 第 13 章 · 进阶Lab 13-E-13:根据身高重建队列按身高排序后按 k 插入,恢复满足可见人数约束的队列。60~75 分钟13E14 · 第 13 章 · 挑战Lab 13-E-14:分发糖果通过左右两遍扫描同时满足相邻评分约束。60~75 分钟13E15 · 第 13 章 · 挑战Lab 13-E-15:最低加油次数在燃料不足时从已过站点选择最大油量,最少化补给次数。75~90 分钟CHAPTER
动态规划
14E01 · 第 14 章 · 入门Lab 14-E-01:爬楼梯用一维计数模型理解“最后一步”如何决定状态转移。30~45 分钟14E02 · 第 14 章 · 入门Lab 14-E-02:最小花费爬楼梯练习把“支付台阶费用”和“到达楼顶”分离建模。35~50 分钟14E03 · 第 14 章 · 基础Lab 14-E-03:数字三角形从父状态有限的三角网格中求一条最大权路径。45~60 分钟14E04 · 第 14 章 · 基础Lab 14-E-04:最大子段和用“必须以当前位置结尾”消除连续子段的枚举。35~50 分钟14E05 · 第 14 章 · 入门Lab 14-E-05:打家劫舍在相邻选择互斥的约束下练习“选与不选”。35~50 分钟14E06 · 第 14 章 · 基础Lab 14-E-06:滑雪把严格下降关系看作 DAG,并用记忆化搜索复用后缀答案。55~75 分钟14E07 · 第 14 章 · 进阶Lab 14-E-07:挖地雷在有向无环图上同时求最大权路径并恢复确定答案。70~90 分钟14E08 · 第 14 章 · 基础Lab 14-E-08:矩阵中的最长递增路径用四邻接严格递增关系构造隐式 DAG。55~75 分钟14E09 · 第 14 章 · 基础Lab 14-E-09:最长上升子序列理解子序列不要求连续,以及“以 i 结尾”的经典状态。45~60 分钟14E10 · 第 14 章 · 基础Lab 14-E-10:合唱队形把双向形态拆成以同一峰值结尾的两个一维 DP。55~70 分钟14E11 · 第 14 章 · 进阶Lab 14-E-11:尼克的任务从末尾倒推时间轴,区分“可休息”和“必须选任务”。60~80 分钟14E12 · 第 14 章 · 入门Lab 14-E-12:不同路径建立最基础的右下网格计数模型。30~45 分钟14E13 · 第 14 章 · 基础Lab 14-E-13:过河卒在网格计数中加入马及其控制点形成的障碍。45~60 分钟14E14 · 第 14 章 · 入门Lab 14-E-14:不同路径 II通过障碍清零掌握网格可达性的传播。35~50 分钟14E15 · 第 14 章 · 基础Lab 14-E-15:最小路径和把网格计数的加法半环替换为最小值转移。40~55 分钟14E16 · 第 14 章 · 进阶Lab 14-E-16:传纸条用同步步数把两条网格路径压缩到三维状态。75~100 分钟14E17 · 第 14 章 · 基础Lab 14-E-17:编辑距离在双前缀状态中统一插入、删除和替换三种操作。55~75 分钟14E18 · 第 14 章 · 基础Lab 14-E-18:采药建立标准 0-1 背包模型并理解容量倒序。45~60 分钟14E19 · 第 14 章 · 入门Lab 14-E-19:装箱问题把“最小剩余空间”改写为“最大已用容量”。35~50 分钟14E20 · 第 14 章 · 基础Lab 14-E-20:疯狂的采药通过容量正序把 0-1 背包改造成完全背包。45~60 分钟14E21 · 第 14 章 · 基础Lab 14-E-21:小 A 点菜把背包目标从最优值切换为恰好装满的方案计数。45~60 分钟14E22 · 第 14 章 · 基础Lab 14-E-22:分割等和子集把集合二分转化为目标为总和一半的 0-1 可行性背包。45~60 分钟14E23 · 第 14 章 · 基础Lab 14-E-23:零钱兑换在完全背包中求恰好达到金额的最少硬币数。45~60 分钟14E24 · 第 14 章 · 基础Lab 14-E-24:零钱兑换 II用循环顺序区分无序组合与有序排列。45~60 分钟14E25 · 第 14 章 · 基础Lab 14-E-25:组合总和 IV与零钱组合题对照,明确“顺序是否构成新方案”。45~60 分钟14E26 · 第 14 章 · 进阶Lab 14-E-26:宝物筛选用二进制拆分把有数量上限的物品转成少量 0-1 物品。65~85 分钟14E27 · 第 14 章 · 进阶Lab 14-E-27:通天之分组背包处理“每组至多选一件”的互斥选择。60~80 分钟14E28 · 第 14 章 · 进阶Lab 14-E-28:樱花统一处理 0-1、多重与完全三种背包物品。70~90 分钟14E29 · 第 14 章 · 进阶Lab 14-E-29:金明的预算方案把主件及其附件组合成分组背包的合法候选。75~100 分钟14E30 · 第 14 章 · 进阶Lab 14-E-30:Buying Hay用封顶状态解决“至少达到目标”的完全背包最小费用。60~80 分钟CHAPTER
回溯与搜索
15E01 · 第 15 章 · 入门Lab 15-E-01:全排列问题路径保存已经选出的前缀,`used[x]` 表示数字 x 是否在当前路径中。35~65 分钟15E02 · 第 15 章 · 入门Lab 15-E-02:组合的输出`start` 是下一次允许选择的最小数字;路径严格递增。35~65 分钟15E03 · 第 15 章 · 入门Lab 15-E-03:子集每个递归结点的路径本身就是一个子集;只向更大的输入下标扩展。35~65 分钟15E04 · 第 15 章 · 基础Lab 15-E-04:选数`start, left, sum` 分别记录后续位置起点、还需选择的数量和当前总和。35~65 分钟15E05 · 第 15 章 · 入门Lab 15-E-05:电话号码的字母组合递归深度表示正在处理第几个数字;每层只从这个数字的字母表中选择。35~65 分钟15E06 · 第 15 章 · 基础Lab 15-E-06:迷宫当前位置与本条路径已经经过的格子共同构成状态;visited不是整次搜索的永久标记。35~65 分钟15E07 · 第 15 章 · 基础Lab 15-E-07:奇怪的电梯每层楼是一个顶点,每次合法按键是权重为1的有向边;BFS首次发现距离就是最短距离。35~65 分钟15E08 · 第 15 章 · 基础Lab 15-E-08:马的遍历棋盘格是顶点,八种合法跳跃是等权边;队列按距离层序展开。35~65 分钟15E09 · 第 15 章 · 基础Lab 15-E-09:括号生成状态为已经使用的左括号数 left 和右括号数 right;始终保持 0 <= right <= left <= n。35~65 分钟15E10 · 第 15 章 · 基础Lab 15-E-10:组合总和`start` 控制后续候选起点,`remaining` 是还需凑出的和;选中i后下一层仍可从i开始。35~65 分钟15E11 · 第 15 章 · 基础Lab 15-E-11:子集 II排序后用start限定后续下标;在同一层跳过重复的值,在不同层仍可以继续取同值。35~65 分钟15E12 · 第 15 章 · 基础Lab 15-E-12:全排列 IIused记录已进入路径的输入位置;相同数字只有前一个副本已被使用时才能选择后一个副本。35~65 分钟15E13 · 第 15 章 · 基础Lab 15-E-13:组合总和 II排序后使用start和remaining;下一层从i+1开始,同层相等值跳过。35~65 分钟15E14 · 第 15 章 · 进阶Lab 15-E-14:单词搜索状态为当前位置、已匹配长度与本条路径使用的格子;成功匹配最后一个字符后返回true。60~100 分钟15E15 · 第 15 章 · 进阶Lab 15-E-15:分割回文串start表示未切分后缀起点;每次选择一个以start开头的回文片段,再处理剩余后缀。60~100 分钟15E16 · 第 15 章 · 进阶Lab 15-E-16:N 皇后每层负责一行;列、行列差、行列和三个占用数组用于O(1)判断攻击关系。60~100 分钟15E17 · 第 15 章 · 进阶Lab 15-E-17:解数独行、列、宫的位掩码记录已使用数字;从空格中选候选数最少的一格进行分支。60~100 分钟15E18 · 第 15 章 · 进阶Lab 15-E-18:八数码难题整个九字符棋盘才是一个状态,不能只以空格位置判断是否访问;BFS按交换次数分层。90~150 分钟15E19 · 第 15 章 · 挑战Lab 15-E-19:小木棍先枚举能整除总长度的目标长度,再搜索当前木棍已经拼出的长度、已完成根数和使用情况。90~150 分钟15E20 · 第 15 章 · 挑战Lab 15-E-20:靶形数独维护行列宫约束与当前得分,用候选数最少的空格分支;忽略空格间冲突可得到乐观的剩余得分上界。90~150 分钟15E21 · 第 15 章 · 挑战Lab 15-E-21:骑士精神IDA*逐渐增大深度上限,非空棋子的错位数给出至少还需多少步;记录本轮到同一棋盘的最小深度。90~150 分钟