☰
07-00 算法与数据结构 · 总目录
2026/10/23 2:20:13 网站建设 项目流程

07-00 算法与数据结构 · 总目录

本目录覆盖算法与数据结构的 22 个核心专题,从基础到进阶,配合完整的模板、题目和练习路线。


学习路径

入门阶段(打基础): → 01 数组与字符串 → 02 链表 → 03 栈与队列 → 04 哈希表 核心阶段(掌握模式): → 05 树与二叉树 → 06 图论 → 07 排序算法 → 08 二分查找 进阶阶段(组合技巧): → 09 双指针与滑动窗口 → 10 递归与回溯 → 11 动态规划-基础 高阶阶段(竞赛/面试压轴): → 12 动态规划-进阶 → 13 贪心算法 → 14 分治算法 → 15 位运算 → 16 数学与高级数据结构 → 17 线段树与树状数组 → 18 最小生成树与网络流 → 19 模拟与构造算法 → 20 字符串算法专题 → 21 数据结构设计模式

文章索引

编号文件核心内容关键算法/技巧难度
01数组与字符串前缀和、差分、字符串匹配前缀和、差分数组、中心扩展、Manacher、KMP、原地哈希★★★
02链表指针操作、缓存设计虚拟头节点、快慢指针、反转链表、LRU、归并排序★★
03栈与队列单调性、嵌套处理单调栈、单调队列、表达式求值、最小栈★★★
04哈希表O(1) 查找、去重、缓存查找配对、频率统计、滑动窗口+Map、布隆过滤器、LFU 缓存★★
05树与二叉树遍历、BST、平衡树DFS/BFS 遍历、BST 操作、AVL/红黑树、线段树、哈夫曼树★★★
06图论遍历、最短路径、连通性BFS/DFS、Dijkstra、拓扑排序、并查集、二分图、Tarjan、网格DFS★★★★
07排序算法9 大排序、稳定性冒泡/选择/插入、归并/快排/堆排、计数/桶/基数★★
08二分查找有序查找、二分答案标准二分、边界二分、旋转数组、二分答案★★
09双指针与滑动窗口对撞指针、窗口技巧对撞双指针、快慢指针、固定/可变窗口★★
10递归与回溯穷举搜索、排列组合递归三要素、排列/组合/子集、N 皇后、迷宫问题★★★
11动态规划-基础一维/二维 DP背包、LCS、LIS、编辑距离、股票买卖★★★★
12动态规划-进阶区间/树形/状压 DP区间 DP、树形 DP、状压 DP、数位 DP、单调队列优化 DP★★★★★
13贪心算法局部最优推导全局区间调度、霍夫曼编码、Jump Game、任务调度★★★
14分治算法大问题分而治之归并/快排分治、大数乘法、最近点对、Strassen★★★
15位运算位操作技巧位操作基础、位运算优化、位掩码、快速幂★★
16数学与高级数据结构数论、Trie、博弈论数论基础、组合数学、Trie 字典树、博弈论、跳表、B+ 树★★★★
17线段树与树状数组区间查询/更新线段树、Lazy 标记、树状数组、逆序对★★★★
18最小生成树与网络流MST、最短路、最大流Kruskal/Prim、Bellman-Ford/SPFA、Edmonds-Karp/Dinic★★★★★
19模拟与构造算法直接模拟、构造解方向数组、边界收缩、贪心构造、分治构造★★★
20字符串算法专题AC 自动机、字符串哈希、后缀数组AC 自动机、Rabin-Karp、后缀数组+LCP、Z-Algorithm★★★★
21数据结构设计模式区间合并、堆操作、设计模式区间合并、Top K 堆、双堆中位数、K 路合并、懒删除堆★★★

知识点速查

数组与字符串(01)

知识点复杂度代表题
前缀和O(n) 预处理, O(1) 查询LC560
差分数组O(1) 修改, O(n) 还原LC1109
最长回文子串(中心扩展)O(n²) time, O(1) spaceLC5
最长回文子串(Manacher)O(n) time, O(n) spaceLC5
KMP 字符串匹配O(n+m) time, O(m) spaceLC28, LC459
原地哈希(Cyclic Sort)O(n) time, O(1) spaceLC41

链表(02)

知识点复杂度代表题
虚拟头节点O(n) time, O(1) spaceLC19, LC82
快慢指针(Floyd 判圈)O(n) time, O(1) spaceLC141, LC142
Floyd 判圈数学证明O(n) time, O(1) spaceLC142 环入口
反转链表(迭代/递归)O(n) time, O(1)/O(n) spaceLC206, LC25
LRU 缓存(HashMap + 双向链表)O(1) timeLC146
链表归并排序O(n log n) timeLC148

栈与队列(03)

知识点复杂度代表题
单调栈(下一个更大元素)O(n) timeLC739, LC84
单调队列(滑动窗口最值)O(n) timeLC239
双栈(表达式求值/嵌套解码)O(n) timeLC150, LC394
最小栈(辅助栈)O(1) timeLC155

哈希表(04)

知识点复杂度代表题
查找配对(complement)O(n) timeLC1
频率统计O(n) timeLC49, LC242
滑动窗口 + MapO(n) timeLC3, LC76
前缀和 + MapO(n) timeLC560
摩尔投票(找众数)O(n) time, O(1) spaceLC169, LC229
布隆过滤器O(k) time分布式场景
LFU 缓存O(1) timeLC460

树与图(05-06)

知识点复杂度代表题
二叉树遍历(前/中/后/层序)O(n) timeLC94, LC102
Morris 遍历(O(1) 空间)O(n) time, O(1) spaceLC94 优化版
BST 查找/插入/删除O(log n) avgLC701, LC450
平衡二叉树判断O(n) timeLC110
二叉树直径O(n) timeLC543
路径总和 III(前缀和)O(n) timeLC437
Dijkstra 最短路径O((V+E) log V)LC743
Bellman-Ford/SPFA(负权边)O(V×E)/O(kE)LC787
拓扑排序(Kahn 算法)O(V+E) timeLC207, LC210
二分图判断(染色法)O(V+E) timeLC785
网格 DFS/BFS(岛屿系列)O(m×n) timeLC200, LC695
Tarjan 算法(桥/割点)O(V+E) time关键边、网络脆弱点
欧拉路径(Hierholzer)O(E log E)LC332
并查集(路径压缩+按秩合并)O(α(n)) ~ O(1)LC684, LC323

排序与二分(07-08)

知识点复杂度代表题
快速排序(随机化 pivot)O(n log n) avgLC912
归并排序O(n log n) worstLC148
堆排序O(n log n) worst, O(1) spaceLC215
希尔排序(Knuth 序列)O(n^(3/2))概念+实现
K 路归并(外部排序)O(n log k)LC23
逆序对(归并变形)O(n log n)剑指 Offer 51
标准二分查找O(log n) timeLC704
二分答案O(log(range) × check)LC410, LC875
三分查找(单峰最值)O(log(range))几何优化
实数精度二分O(log(1/eps))POJ 1064

双指针与回溯(09-10)

知识点复杂度代表题
对撞双指针(有序数组)O(n) timeLC15, LC11
快慢指针(链表)O(n) timeLC141, LC160
可变窗口滑动O(n) timeLC209
排列/组合/子集(回溯)O(2^n) ~ O(n!)LC46, LC77, LC78
N 皇后O(n!) timeLC51
解数独O(9^(n×n)) 剪枝优LC37
单词搜索(网格回溯)O(mn×4^L)LC79
记忆化搜索O(state×action)Top-Down DP

动态规划(11-12)

知识点复杂度代表题
一维 DP(爬楼梯/打家劫舍)O(n) timeLC70, LC198
Kadane 算法(最大子数组和)O(n) time, O(1) spaceLC53
网格 DP(路径/最小和)O(m×n) timeLC62, LC64
博弈 DP(净胜分)O(n²) timeLC877
二维 DP(LCS/编辑距离)O(m×n) timeLC1143, LC72
背包问题(0-1/完全/多重)O(n×W) timeLC416, LC322
区间 DP(石子合并)O(n³) timeLC312
树形 DP(二叉树最大路径)O(n) timeLC124
状压 DP(旅行商问题)O(n² × 2^n) timeLC1879
数位 DPO(log n × state)LC357, LC233
DAG 上的 DPO(V+E) timeLIS 本质
单调队列优化 DPO(n) timeLC1425, LC862
斜率优化 DP(概念)O(n) time竞赛级优化
单调队列优化 DPO(n) timeLC1425, LC862

其他(13-19)

知识点复杂度代表题
贪心(区间调度)O(n log n)LC435
贪心(分发糖果-两次扫描)O(n) timeLC135
分治(最近点对)O(n log n)经典算法
分治(Karatsuba 大数乘法)O(n^1.585)概念+实现
位运算(只出现一次的数字)O(n) time, O(1) spaceLC136, LC260
格雷编码O(2^n) timeLC89
BitSet/布隆过滤器O(1) time大数据去重
Trie 字典树O(L) 插入/查询LC208, LC211
数论(扩展欧几里得/逆元)O(log n)线性同余方程
快速幂取模O(log n)LC372
卡特兰数O(n²) 递推LC96, LC22
线段树(Lazy 标记)O(log n) 查询/更新LC307, LC699
树状数组(BIT)O(log n) 更新/查询LC315, LC493
MST(Kruskal/Prim)O(E log E) / O(E log V)LC1584
网络流(Edmonds-Karp)O(VE²)最大流最小割
模拟(螺旋矩阵)O(m×n) timeLC54, LC59
构造(漂亮数组)O(n log n) 分治LC932
AC 自动机(多模式匹配)O(N+M) time多模式串匹配
字符串哈希(Rabin-Karp)O(N) 预处理, O(1) 比较LC1044
后缀数组(SA+LCP)O(N log N) 构建最长重复子串
Z-AlgorithmO(N) timeLC1392, LC459
博弈论(Bash/Nim/SG)O(n) 时间判断LC292, LC877
区间合并O(N log N) timeLC56, LC57
Top K 堆O(N log K) timeLC215, LC347
双堆找中位数O(log N) 插入, O(1) 查询LC295
K 路合并O(N log K) timeLC23

面试高频 TOP 20

排名题目分类核心技巧
1LC1 两数之和哈希表HashMap 查找配对
2LC206 反转链表链表三指针迭代
3LC21 合并两个有序链表链表虚拟头节点 + 归并
4LC53 最大子数组和数组Kadane 算法
5LC15 三数之和数组/双指针排序 + 双指针
6LC20 有效的括号栈栈匹配
7LC76 最小覆盖子串滑动窗口need[] + required 计数
8LC200 岛屿数量图论DFS/BFS 淹没
9LC146 LRU 缓存链表/哈希表HashMap + 双向链表
10LC239 滑动窗口最大值单调队列单调递减队列
11LC169 多数元素摩尔投票互相抵消
12LC560 和为 K 的子数组前缀和presum + HashMap
13LC739 每日温度单调栈单调递减栈
14LC42 接雨水双指针维护左右最大值
15LC84 柱状图最大矩形单调栈左右边界查找
16LC322 零钱兑换DP完全背包
17LC300 最长递增子序列DPLIS + 二分优化
18LC1143 最长公共子序列DP二维 DP
19LC312 戳气球DP区间 DP
20LC124 二叉树最大路径和树形 DP后序遍历
21LC25 K 个一组翻转链表链表分组反转

算法复杂度基准

复杂度适用规模典型算法
O(1)无限制哈希表查找、位运算
O(log n)n ≤ 10^18二分查找、快速幂
O(n)n ≤ 10^7线性扫描、KMP、双指针
O(n log n)n ≤ 10^6排序、归并、Dijkstra
O(n²)n ≤ 5000DP 二维表、暴力双指针
O(n³)n ≤ 500区间 DP、Floyd
O(2^n)n ≤ 25状态压缩 DP
O(n!)n ≤ 12全排列、N 皇后

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询