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)