Catalog
目录
17 个课题,覆盖线性结构、树与堆、哈希、图、查找、排序与常用技巧。 登录后可记录进度。
Array入门
数组
连续内存中的同构序列。按下标随机访问极快,在中间插入或删除需要搬移元素。
线性结构访问 O(1) / 插入 O(n)
Linked List入门
链表
结点通过指针串联。插入删除不搬移,但无法按下标跳跃,只能顺着 next 走。
线性结构访问 O(n) / 插入 O(1)
Stack入门
栈
后进先出(LIFO)。只在同一端压入和弹出,像一摞盘子。
线性结构push / pop O(1)
Queue入门
队列
先进先出(FIFO)。一端入队、另一端出队,像排队。
线性结构enqueue / dequeue O(1)
Hash Table核心
哈希表
把键映射到桶下标。平均常数时间的插入、查找、删除;冲突用拉链或开放寻址解决。
哈希均摊 O(1)
BST核心
二叉搜索树
左子树都更小、右子树都更大。中序遍历即有序序列。平衡时查找像二分。
树与堆平均 O(log n)
Heap核心
堆
完全二叉树,父结点总不小于(或小于)孩子。数组即可表示,堆顶永远是最值。
树与堆插入 / 弹出 O(log n)
Graph进阶
图
结点与边的集合。可有向、可带权。邻接表适合稀疏图,邻接矩阵适合稠密图。
图遍历 O(V+E)
Binary Search核心
二分查找
在有序序列上每次丢掉一半。边界写对,对数时间定位目标。
查找O(log n)
Bubble Sort入门
冒泡排序
反复比较相邻元素,大的往后冒。每轮把当前最大值送到右端。
排序O(n²)
Insertion Sort入门
插入排序
把当前牌插入左手已经排好的序列。小数组或近乎有序时非常快。
排序O(n²) / 近乎有序 O(n)
Merge Sort核心
归并排序
分治:拆成两半分别排序,再把两个有序数组合并。稳定,时间稳定。
排序O(n log n)
Quick Sort核心
快速排序
选一个基准,小的摆左边、大的摆右边,再递归两边。原地、缓存友好。
排序平均 O(n log n)
BFS核心
广度优先
用队列一层一层扩张。无权图上第一次到达就是最短路。
图O(V+E)
DFS核心
深度优先
沿一条路走到底再回溯。适合连通性、拓扑、路径枚举、树形 DP。
图O(V+E)
Two Pointers核心
双指针
两个下标相向或同向移动,把 O(n²) 的枚举压成一次扫描。
技巧O(n)
Sliding Window核心
滑动窗口
维护一段连续子数组,右端扩张、左端收缩,窗口内统计一次更新。
技巧O(n)