数据结构与算法
从复杂度分析到动态规划,从哈希表源码到 B+Tree 索引,43 章系统讲透数据结构与算法。覆盖面试高频题型、工程实战应用和经典理论证明,Python 代码可直接运行。
43
章节
免费
永久
目录
Ch01
复杂度:衡量代码快慢的尺子
大O/Ω/Θ、均摊分析、为什么常数项有时比O更重要
Ch02
数组:连续内存的力量与代价
内存布局、Cache友好性、Python list 源码分析
Ch03
前缀和与差分数组
一维/二维前缀和、差分数组、区间修改与查询
Ch04
链表:指针的艺术
单/双/循环链表、反转/合并/环检测、跳表引入
Ch05
栈:后进先出的魔法
调用栈、表达式求值、括号匹配
Ch06
单调栈与单调队列
下一个更大元素、接雨水、滑动窗口最大值
Ch07
队列与双端队列
BFS基础、循环队列、双端队列
Ch08
哈希表:O(1) 的代价
哈希函数、冲突解决、Python dict 源码、一致性哈希
Ch09
布隆过滤器与概率数据结构
布隆过滤器数学推导、Count-Min Sketch、HyperLogLog
Ch10
二叉树:递归思维的起点
四种遍历、递归与迭代、序列化、公共祖先
Ch11
二叉搜索树与平衡树
AVL旋转、红黑树、Linux CFS 为什么用红黑树
Ch12
堆与优先队列
二叉堆、heapq 源码、Top-K、合并K个链表
Ch13
字典树与AC自动机
Trie树、自动补全、AC自动机敏感词过滤
Ch14
线段树与树状数组
区间查询/修改、懒传播、逆序对统计
Ch15
并查集:连通性的利器
路径压缩+按秩合并、Kruskal中的应用
Ch16
图的表示与遍历
邻接矩阵/邻接表、BFS/DFS、连通分量、二分图
Ch17
拓扑排序与有向图
课程表系列、编译依赖、环检测
Ch18
最短路与最小生成树
Dijkstra/Bellman-Ford/Floyd、Prim/Kruskal
Ch19
强连通分量与网络流
Tarjan/Kosaraju、二分图匹配、最大流
Ch20
B-Tree、B+Tree 与 LSM-Tree
MySQL索引、LevelDB/RocksDB、Redis跳表
Ch21
排序:从冒泡到 TimSort
八大排序对比、TimSort 源码、外部排序
Ch22
二分查找:简单到出错
左闭右开 vs 左闭右闭、bisect 源码
Ch23
双指针与滑动窗口
快慢指针、对撞指针、最小覆盖子串
Ch24
递归与分治
归并排序、快速幂、Karatsuba大整数乘法
Ch25
回溯:暴力搜索的优雅写法
排列/组合/子集、N皇后、剪枝策略
Ch26
贪心:局部最优的赌注
Huffman编码、区间调度、贪心正确性证明
Ch27
动态规划(一):一维与背包
状态定义、转移方程、0-1背包/完全背包
Ch28
动态规划(二):序列与区间
LCS/LIS/编辑距离、区间DP
Ch29
动态规划(三):树形与状压
树形DP、状态压缩、数位DP、博弈类DP
Ch30
字符串匹配:从暴力到 KMP
KMP完整推导、Boyer-Moore、Rabin-Karp、Z函数
Ch31
多模式匹配与AC自动机
Trie上建失配指针、敏感词过滤实战
Ch32
后缀数组与后缀自动机
SA-IS构建、LCP数组、后缀自动机SAM
Ch33
柔性匹配与正则引擎
编辑距离、Myers diff、NFA→DFA、正则引擎原理
Ch34
位运算:接近硬件的思考
异或技巧、位图Bitmap、状态压缩
Ch35
数论与数学基础
GCD/素数筛/快速幂取模/组合数学
Ch36
随机化与概率算法
洗牌算法、水塘抽样、SkipList随机层高
Ch37
复杂度理论:P、NP 与 NPC
图灵机、归约、为什么有些问题没有快速算法
Ch38
设计类数据结构
LRU/LFU完整实现、最小栈、随机化集合
Ch39
实战算法:限流与调度
令牌桶/漏桶/滑动窗口限流、负载均衡
Ch40
数据结构选型指南
按场景决策树、时间/空间/Cache/并发四维对比
Ch41
面试通关:题型分类与解题框架
UMPIRE方法、15种高频题型分类
Ch42
从算法到系统设计
一致性哈希/CRDT/Raft、与Redis/Kafka/MySQL内链
Ch43
学习路线与刷题指南
按难度分级的刷题路线、200题精选清单