课程 · CATALOG
课程
87 个课题 · 一次专注一门
数据结构 教材配套 · 李春葆
线性结构
10 课题 0%- 01单链表 一串用指针连起来的节点,插删不用挪位置,找元素只能顺着爬交互式
- 02栈和队列 栈只能从顶进出(后进先出),队列一头进另一头出(先进先出)交互式
- 03串的模式匹配(KMP) 主串指针不回退,失配时模式串按 next 数组跳到该去的位置交互式
- 04Sunday 匹配 失配时看主串参与匹配段后面那一格的字符,按偏移表大步跳交互式
- 05最长回文子串 插分隔符后利用已算出的回文半径对称加速,线性找最长回文交互式
- 06Trie 字典树 按字符逐层分叉,公共前缀只存一份交互式
- 07单调栈 栈里保持单调,新元素把挡路的都弹出去——每个元素只进出一次交互式
- 08跳表 Skip List 给有序链表加多层快速通道,查找像走高架桥交互式
- 09树状数组 Fenwick Tree 下标按 lowbit 分层管理,前缀和与单点更新都是 O(log n)交互式
- 10LRU 缓存 哈希表负责定位、双向链表管新旧顺序,淘汰永远从尾部走交互式
树形结构
5 课题 0%图结构
14 课题 0%- 01图的存储 邻接矩阵一行看出谁连谁,邻接表省空间但查边要遍历交互式
- 02图的遍历 BFS 一层层扩散(用队列),DFS 一条路走到黑再回头(用栈/递归)交互式
- 03最小生成树 用最小的总边权把所有点连起来:Prim 逐点扩张,Kruskal 逐边挑选交互式
- 04最短路径 Dijkstra:每次把离起点最近的点定下来,再用它松弛邻居交互式
- 05拓扑排序 每次拿走入度为 0 的点——课程先修顺序就是这么排的交互式
- 06关键路径 AOE 网里耗时最长的那条路,决定整个工程的最短工期交互式
- 07A* 寻路 优先扩展 f=g+h 最小的点,h 是到终点的估计距离交互式
- 08并查集 每个集合一棵树,find 找到代表元素,union 把两棵树合并交互式
- 09Tarjan 强连通分量 一次 DFS 用 dfn/low 两个数,把「互相可达」的点打包成组交互式
- 10割点检测 删掉它图就断开的点;DFS 里用 low 与 dfn 比出来交互式
- 11LCA 最近公共祖先 倍增预处理每个点的 2^k 级祖先,查询时两点同步上跳交互式
- 12Bellman-Ford 最短路 所有边松弛 n-1 轮,能处理负权;再松弛还能动就有负环交互式
- 13最大流 Edmonds-Karp 反复找从源点到汇点的增广路推流量,直到一条都找不到交互式
- 14二分图判定 染色法:相邻点颜色必须相反,染出冲突就不是二分图交互式
排序算法
9 课题 0%- 01快速排序 选一个基准,比它小的扔左边、大的扔右边,再对两边重复交互式
- 02冒泡排序 相邻两个比一比,大的往后换,每一轮最大的数就冒到了末尾交互式
- 03直接插入排序 像整理扑克牌:每张新牌插进前面已经排好的部分里交互式
- 04简单选择排序 每轮从剩下的里挑最小的放到前面,交换次数最少的排序交互式
- 05归并排序 两个有序表合成一个有序表:从单个元素开始两两合并到整体交互式
- 06堆排序 把数组看成一棵完全二叉树,每次取走堆顶,再把剩余调整成堆交互式
- 07希尔排序 按间隔分组各自做插入排序,间隔逐轮缩小到 1交互式
- 08基数排序 不比大小,按个位、十位……逐位「分发—收集」交互式
- 09计数排序 数每个值出现了几次,再按顺序回填——值的范围小才划算交互式