Skip to content
实践实验

用实验把理解落到代码上

每个 Lab 都对应明确目标、建议用时和可验收提交物。先独立实现,再用边界测试与同伴 Review 检查理解是否可靠。

00
CHAPTER

基础

01
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 小时
02
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 分钟
03
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 分钟03P01 · 第 3 章 · 综合Lab 03-P-01:串匹配与文本处理引擎在统一 Matcher 契约下实现朴素匹配、KMP 与 nextval,用文本处理引擎和固定 seed 工作负载完成确定性比较与工程选型。5~7 小时03P02 · 第 3 章 · 综合Lab 03-P-02:稀疏矩阵运算库在统一契约下实现稀疏矩阵的三元组转置、加法与乘法,用固定 seed 工作负载比较稀疏与稠密场景,并给出带前提的存储选型。5~7 小时
04
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:二叉树的完全性检验利用层序遍历与空节点连续性判定,检验一棵二叉树是否为完全二叉树。20~30 分钟04E02 · 第 4 章 · 进阶Lab 04-E-02:二叉树的最大宽度利用完全二叉树的父子编号性质计算二叉树的最大宽度。25~35 分钟04E03 · 第 4 章 · 入门Lab 04-E-03:二叉树的前序遍历实现二叉树的前序遍历(根 -> 左 -> 右),掌握递归与显式栈迭代两种经典 DFS 解法。15~20 分钟04E04 · 第 4 章 · 入门Lab 04-E-04:二叉树的层序与锯齿形遍历使用队列与双端队列完成二叉树的标准分层输出与锯齿形反转输出。20~30 分钟04E05 · 第 4 章 · 入门Lab 04-E-05:二叉树的右视图利用广度优先搜索或右优先深度优先搜索获取二叉树的右视图。20~30 分钟04E06 · 第 4 章 · 进阶Lab 04-E-06:从前序与中序遍历构造二叉树通过前序确定根节点与中序划分区间的区间分治思想恢复二叉树。25~35 分钟04E07 · 第 4 章 · 进阶Lab 04-E-07:从中序与后序遍历构造二叉树通过后序确定根节点与中序划分区间的镜像分治恢复二叉树。25~35 分钟04E08 · 第 4 章 · 进阶Lab 04-E-08:二叉树展开为链表通过原地指针变换将二叉树按先序遍历顺序展开为单向右链表。20~30 分钟04E09 · 第 4 章 · 入门Lab 04-E-09:对称二叉树判定通过双树镜像下潜递归比较判定一棵二叉树是否镜像对称。15~25 分钟04E10 · 第 4 章 · 入门Lab 04-E-10:另一棵树的子树通过双重递归或树结构哈希判定一棵树是否包含另一棵树的全部结构。20~30 分钟04E11 · 第 4 章 · 入门Lab 04-E-11:求根节点到叶节点数字之和利用前序遍历与自顶向下数值累乘累加,计算所有根到叶数字的总和。20~30 分钟04E12 · 第 4 章 · 进阶Lab 04-E-12:路径总和 II(收集所有路径)通过显式回溯收集所有满足目标和的根到叶完整路径。25~35 分钟04E13 · 第 4 章 · 进阶Lab 04-E-13:二叉树的直径理解单侧深度返回值与全局跨根最长路径的解耦,计算二叉树的直径。20~30 分钟04E14 · 第 4 章 · 进阶Lab 04-E-14:二叉树的最近公共祖先利用后序遍历自底向上汇聚左右子树目标节点状态,求解最近公共祖先 LCA。25~35 分钟04E15 · 第 4 章 · 挑战Lab 04-E-15:二叉树中的最大路径和通过后序遍历与树形动态规划,计算任意两节点间非空路径的最大权值和。30~45 分钟04E16 · 第 4 章 · 挑战Lab 04-E-16:网络最优选址利用换根动态规划,高效计算以每个节点为根时的全树距离和。45~60 分钟04E17 · 第 4 章 · 挑战Lab 04-E-17:科研团队组建在树形依赖结构上做背包动态规划,求满足依赖约束的最大价值选择方案。50~70 分钟04E18 · 第 4 章 · 挑战Lab 04-E-18:通信基站选址利用树的直径性质,求允许中心落在边上时的最小覆盖半径与绝对中心位置。45~60 分钟04E19 · 第 4 章 · 挑战Lab 04-E-19:二叉树的最长之字形路径通过树形动态规划,计算二叉树中最长边方向交替的向下路径。40~55 分钟04E20 · 第 4 章 · 挑战Lab 04-E-20:树的同构判定通过求重心与规范编码,判定两棵无根树是否同构。55~75 分钟
05
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~30 分钟05E07 · 第 5 章 · 进阶Lab 05-E-07:数据流中的中位数使用双堆技巧(最大堆 + 最小堆)动态维护数据流的中位数。25~40 分钟05E08 · 第 5 章 · 进阶Lab 05-E-08:任务调度器使用贪心 + 优先队列安排任务,计算完成所有任务所需的最少时间单位。30~45 分钟05E09 · 第 5 章 · 入门Lab 05-E-09:哈夫曼编码构建哈夫曼树,生成各字符的编码,并计算编码后的总长度。20~35 分钟05E10 · 第 5 章 · 进阶Lab 05-E-10:最优合并问题将多个有序表合并为一个有序表,每次只能合并两个表,求最小合并代价。20~35 分钟05E11 · 第 5 章 · 挑战Lab 05-E-11:k 叉哈夫曼树拓展哈夫曼编码到 k 叉树,每次合并 k 个节点,求最小带权路径长度。35~50 分钟05E12 · 第 5 章 · 入门Lab 05-E-12:并查集的实现实现带路径压缩和按秩合并的并查集,支持合并集合与查询归属。15~25 分钟05E13 · 第 5 章 · 进阶Lab 05-E-13:动态连通性查询在并查集上维护连通分量数量,支持动态加边与查询当前连通分量数。20~35 分钟05E14 · 第 5 章 · 挑战Lab 05-E-14:食物链使用带权并查集维护节点间的相对关系,判断陈述的真伪。经典扩展域并查集问题。40~60 分钟05E15 · 第 5 章 · 挑战Lab 05-E-15:银河英雄传说使用带权并查集维护队列中的相对距离,支持合并队列与查询两舰之间的距离。45~60 分钟05E16 · 第 5 章 · 进阶Lab 05-E-16:B 树的插入实现 B 树的插入操作,包括节点分裂,输出插入完成后 B 树的层序遍历。40~60 分钟05E17 · 第 5 章 · 挑战Lab 05-E-17:B+ 树的范围查询模拟 B+ 树的索引结构,支持按顺序插入关键字和区间查询,输出范围内关键字数量。40~60 分钟
06
CHAPTER

图的基础与存储

07
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 统计无向图的连通分量个数,并输出每个顶点所属分量的编号。30~45 分钟07E03 · 第 7 章 · 进阶Lab 07-E-03:有向图环检测用三色标记的 DFS 判断有向图是否含环,区分指向当前递归栈与已完成顶点的边。60~90 分钟07E04 · 第 7 章 · 基础Lab 07-E-04:最小生成树实现 Kruskal 算法求无向图的最小生成树,输出边权之和,并正确处理多重边与自环。120~150 分钟07E05 · 第 7 章 · 基础~进阶Lab 07-E-05:显式栈 DFS用显式栈实现与递归升序一致的 DFS 访问顺序,在百万级深图上避免递归爆栈。60~90 分钟07E06 · 第 7 章 · 进阶Lab 07-E-06:BFS 二分图判定用 BFS 黑白染色判定无向图是否为二分图,冲突时输出首次发现的冲突边。60~90 分钟07E07 · 第 7 章 · 基础Lab 07-E-07:Dijkstra 逐轮手推推演用朴素 O(n²) Dijkstra 复现考研手推表:每轮选出距离最小的未确定顶点,输出最终距离、前驱与确定顺序。60~75 分钟07E08 · 第 7 章 · 基础Lab 07-E-08:朴素 Dijkstra 与路径还原用邻接矩阵实现考研教材标准的 O(n²) Dijkstra,回答多个目标的距离与完整路径查询。75~90 分钟07E09 · 第 7 章 · 中等Lab 07-E-09:网络延迟时间LeetCode 743:求单源最短路径的最大值——信号传遍全网所需时间,不可达时输出 -1。75~90 分钟07E10 · 第 7 章 · 中等Lab 07-E-10:紧急救援PAT 1003 经典变形:Dijkstra 上同时维护最短路径条数与最大救援队数,一条路径两个判据。90~120 分钟07E11 · 第 7 章 · 进阶Lab 07-E-11:Bellman-Ford 与负环用 n-1 轮全边松弛处理负权单源最短路,再用第 n 轮检测从源点可达的负环。90~120 分钟07E12 · 第 7 章 · 进阶Lab 07-E-12:Floyd 全源最短路径用三重循环预计算任意点对的最短距离,用后继矩阵还原路径,回答多点对查询。90~120 分钟
08
CHAPTER

查找

09
CHAPTER

散列与索引结构

10
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 分钟
11
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 分钟
12
CHAPTER

分治与递归

12T01 · 第 12 章 · 基础~进阶Lab 12-T-01:递归基础与分治思想选择题精练巩固递归边界、调用栈、记忆化、汉诺塔与分治基本模型。10 分钟12T02 · 第 12 章 · 基础~进阶Lab 12-T-02:典型分治算法选择题精练用 10 道选择题检查归并排序、快速排序、逆序对、最大子段和与 Karatsuba 的分治分析。40~55 分钟12E01 · 第 12 章 · 基础Lab 12-E-01:汉诺塔递归演示用递归输出汉诺塔最少移动次数与完整移动序列。30~45 分钟12E02 · 第 12 章 · 进阶Lab 12-E-02:最大子数组和(分治)用分治法计算最大连续子数组和。45~60 分钟12E03 · 第 12 章 · 进阶Lab 12-E-03:逆序对计数(归并分治)在归并过程中统计逆序对,将复杂度降至 O(n log n)。45~60 分钟12E04 · 第 12 章 · 基础Lab 12-E-04:爬楼梯:递归与记忆化比较朴素递归与记忆化递归的结果和调用次数。35~50 分钟12E05 · 第 12 章 · 基础Lab 12-E-05:递归折半查找在有序数组中递归查找目标值第一次出现的位置。30~40 分钟12E06 · 第 12 章 · 基础Lab 12-E-06:递归快速幂用指数奇偶拆分递归计算模意义下的快速幂。30~45 分钟12E07 · 第 12 章 · 基础Lab 12-E-07:归并排序实现稳定的归并排序。40~55 分钟12E08 · 第 12 章 · 进阶Lab 12-E-08:快速排序使用划分函数和递归完成原地快速排序。45~60 分钟12E09 · 第 12 章 · 进阶Lab 12-E-09:快速选择:第 K 大元素基于 partition 只递归目标所在一侧。45~60 分钟12E10 · 第 12 章 · 基础Lab 12-E-10:递归合并两个有序链表递归选择较小头节点并连接剩余链表。40~55 分钟12E11 · 第 12 章 · 进阶Lab 12-E-11:多数元素(分治)递归求左右候选,并在合并阶段验证多数元素。45~60 分钟12E12 · 第 12 章 · 进阶Lab 12-E-12:分治合并 K 个有序链表按链表编号区间二分,递归合并 K 条有序链表。55~75 分钟12E13 · 第 12 章 · 挑战Lab 12-E-13:表达式的所有可能计算结果以运算符为分割点递归组合左右子表达式结果。60~80 分钟
13
CHAPTER

贪心算法

14
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 分钟