第1章 本书的使用方法 1
第2章 C/C++快速入门 2
2.1 基本数据类型 2
2.2 顺序结构 2
2.3 条件结构 2
2.4 循环结构 2
2.5 数组 3
2.6 函数 3
2.7 指针 3
2.8 结构体(struct)的使用 3
2.9 补充 3
2.10 黑盒测试 4
第3章 入门篇(1)——入门模拟 5
3.1 简单模拟 5
3.2 查找元素 29
3.3 图形输出 43
3.4 日期处理 50
3.5 进制转换 50
3.6 字符串处理 58
第4章 入门篇(2)——算法初步 87
4.1 排序 87
4.2 散列 128
4.3 递归 148
4.4 贪心 148
4.5 二分 165
4.6 two pointers 176
4.7 其他高效技巧与算法 184
第5章 入门篇(3)——数学问题 189
5.1 简单数学 189
5.2 最大公约数与最小公倍数 201
5.3 分数的四则运算 203
5.4 素数 209
5.5 质因子分解 218
5.6 大整数运算 223
5.7 扩展欧几里得算法 231
5.8 组合数 231
第6章 C++标准模板库(STL)介绍 232
6.1 vector的常见用法详解 232
6.2 set的常见用法详解 238
6.3 string的常见用法详解 241
6.4 map的常见用法详解 244
6.5 queue的常见用法详解 256
6.6 priority_queue的常见用法详解 256
6.7 stack的常见用法详解 257
6.8 pair的常见用法详解 257
6.9 algorithm头文件下常用函数介绍 257
第7章 提高篇(1)——数据结构专题(1) 258
7.1 栈的应用 258
7.2 队列的应用 261
7.3 链表处理 264
第8章 提高篇(2)——搜索专题 278
8.1 深度优先搜索(DFS) 278
8.2 广度优先搜索(BFS) 281
第9章 提高篇(3)——数据结构专题(2) 286
9.1 树与二叉树 286
9.2 二叉树的遍历 286
9.3 树的遍历 296
9.4 二叉查找树(BST) 316
9.5 平衡二叉树(AVL树) 325
9.6 并查集 329
9.7 堆 333
9.8 赫夫曼树 337
第10章 提高篇(4)——图算法专题 338
10.1 图的定义和相关术语 338
10.2 图的存储 338
10.3 图的遍历 338
10.4 最短路径 357
10.5 最小生成树 385
10.6 拓扑排序 386
10.7 关键路径 386
第11章 提高篇(5)——动态规划专题 387
11.1 动态规划的递归写法和递推写法 387
11.2 最大连续子序列和 387
11.3 最长不下降子序列(LIS) 390
11.4 最长公共子序列(LCS) 392
11.5 最长回文子串 394
11.6 DAG最长路 396
11.7 背包问题 396
11.8 总结 399
第12章 提高篇(6)——字符串专题 400
12.1 字符串hash 400
12.2 KMP算法 402
第13章 专题扩展 403
13.1 分块思想 403
13.2 树状数组 406
13.3 快乐模拟 408
附录 430