包括常见的基础数据结构、算法,也包含了类似 LeetCode 的刷题技巧。
数据结构
这里主要介绍一些常规的数据结构。
树
其它
- 优先队列 元素被赋予优先级,通常用栈来实现,每次获取优先级最高或者最低的元素。
- SkipList 随机化数据结构,基于并联的链表,其效率可比拟二叉查找树。
- 并查集 通过数组实现的一个很简单但实用的集合查询。
- 树状数组 最开始用于计算累加频数,目前通常用于高效的计算前缀和、区间和。
- 离散化数组 使用相对大小而非绝对大小来保存数据,这样有些场景下可以提高效率。
常用算法
二分查找
这是一种高效的查找方法,不过其要求保存的数据必须是顺序存储的,一般是数组,而且所有的元素必须要有序排列,可以支持某个值以及左右边界的查找。
看着简单,但会涉及到很多细节,这里详细介绍其实现。
其它
参考
- The Algorithm Python 一个 130+K 星的经典算法仓库。
其它
Bitmap
常见的 Bitmap 使用比较简单,除此之外还提供了一些扩展。
- BloomFilter 一种类似 Hash Set 的数据结构,区别是无需保存 Key,通常用于判重。
LSM
参考
- MiniLSM 不错的基于 Rust 实现 LSM 教程。