- TODO
- LeetCode
- LintCode
- Code Hunt
- hihoCoder
- 算法
- 数据结构与算法(C++描述)
- 算法导论
- 编程之美
- 剑指Offer
- 编程珠玑
- 挑战程序设计竞赛
- 算法竞赛入门经典(第2版)
- 算法竞赛入门经典训练指南
- 算法的乐趣
- 字符串 Strings
- 模式匹配
- KMP算法
- Rabin-Karp算法
- Aho-Corasick自动机
- 有限自动机
- 扩展KMP
- Trie字典树
- 压缩Trie
- 后缀树
- 后缀数组
- Manacher回文子串算法
- 字符串哈希
- 模式匹配
- 数据结构 Data Structures
- 布隆过滤器
- 并查集
- 树状数组BIT
- 环形缓冲区
- 双向链表
- 双端队列
- 跳舞链Dancing Links
- 图 Graph
- 图的两种存储方式及其特点
- 用DFS求连通块
- 用BFS求最短路
- 欧拉回路
- 拓扑排序,图的序列化。
- Dijkstra最短路径算法
- Bellman-Ford最短路径算法
- Floyd-Warshall最短路径算法
- Kruskall最小生成树算法
- Prim最小生成树算法
- 稳定婚姻问题
- 二分图最大匹配
- 最短增广路算法
- 树 Tree
- 最近公共祖先LCA
- Splay树
- Treap
- 红黑树,C++ STL的标准实现方式
- 线段树
- 划分树
- AVL树
- B+树
- BSP树
- K-D树
- 动态规划 Dynamic Programming
- 背包问题集锦
- 最长不下降子序列
- 最长公共子序列
- 最大子矩阵
- DAG上的动态规划
- 多阶段决策问题
- 线性结构上的动态规划
- 树上的动态规划
- 复杂状态的动态规划
- 分治法 Divide and Conquer
- 平面最近点对
- 最大子数组问题,该题有线性算法。
- 矩阵乘法的Strassen算法
- 暴力求解 Brute-Force
- 枚举排列
- 子集生成
- 八皇后问题
- 路径查找问题
- 排序 Sorting
- BrustSort,大规模字符串排序
- 链表MergeSort
- 快速排序算法
- 归并排序算法
- 快速选择算法,第k大问题
- 数学 Mathematics
- 快速傅里叶变换FFT
- 矩阵快速幂
- 高精度计算,加减乘除
- 进制转换
- 母函数
- 矩阵计算
- 欧拉筛法
- 最大公约数,最小公倍数,扩展欧几里得
- 数论中的计数问题
- 编码与解码
- 离散概率
- 线性规划
- 搜索 Searching
- 迭代加深搜索
- 双向广度搜索
- A* 算法
- IDA* 算法
- 计算几何 Computation Geometry
- 凸包,二维/三维
- 旋转卡壳算法
- 控制 Control
- PID
- 卡尔曼滤波
- 贪心 Greedy Method
- 哈夫曼树
- 智能算法 Intelligence
- 蚁群算法
- 遗传算法
- 神经网络
- 模拟退火
- 博弈论 Game Theory
- 极大极小博弈树,Minimax Algorithm