第1章 字符串 1
1.1 字符串的旋转 2
1.2 字符串的包含 5
1.3 字符串的全排列 9
1.4 字符串转换成整数 13
1.5 回文判断 17
1.6 最长回文子串 19
本章习题 23
第2章 数组 27
2.1 寻找最小的k个数 28
2.2 寻找和为定值的两个数 31
2.3 寻找和为定值的多个数 34
2.4 最大连续子数组和 39
2.5 跳台阶问题 43
2.6 奇偶数排序 45
2.7 荷兰国旗 50
2.8 矩阵相乘 54
2.9 完美洗牌算法 58
本章习题 69
第3章 树 80
3.1 统计出现次数最多的数据 81
3.2 上亿行数据的快速查询 90
3.3 最近公共祖先问题 105
本章习题 117
第4章 查找 121
4.1 有序数组的查找 122
4.2 行列递增矩阵的查找 124
4.3 出现次数超过一半的数 127
4.4 字符串的查找 131
本章习题 151
第5章 动态规划 152
5.1 最大连续乘积子数组 153
5.2 字符串编辑距离 157
5.3 格子取数问题 161
5.4 交替字符串 167
本章习题 169
第6章 海量数据处理 171
6.1 基础知识:STL容器 172
6.2 散列分治 174
6.3 多层划分 180
6.4 MapReduce 181
6.5 外排序 183
6.6 位图 186
6.7 布隆过滤器 188
6.8 Trie树 193
6.9 数据库 197
6.10 倒排索引 198
6.11 simhash算法 199
本章习题 205
第7章 机器学习 209
7.1 K近邻算法 210
7.2 支持向量机 215
附录 其他题型 233
A.1 语言基础 234
A.2 链表 235
A.3 矩阵 237
A.4 堆、栈和队列 239
A.5 图搜索 240
A.6 概率统计 244
A.7 智力逻辑 247
A.8 系统协议 253
A.9 系统设计 256
参考文献 261