此篇文章是对自己学习这门课程的一个总结和课后的一些练习,做一个汇总,希望对大家有帮助。本人是半路程序员,2018年2月开始学习C++的,下面的代码基本都是C++11版本的,代码有错误的地方请不吝留言赐教。附有部分练习LeetCode、POJ的题目。updated on 2019.9.3
1.链表 Linked List
1.1 单链表
1.2 练习
2.栈 Stack
2.1 顺序栈、链式栈
2.2 共享顺序栈
2.3 练习
3.队列 Queue
3.1 链式队列、顺序队列
3.2 循环顺序队列
3.3 练习
4.递归 Recursion
4.1 走台阶问题
4.2 汉诺塔问题
4.3 练习
5.排序 Sorting
5.1 十种基本的排序算法
5.2 快速排序的优化1— 快速排序细节优化2
5.3 练习
6.二分查找 Binary Search
6.1 查找给定条件的值
6.2 练习
7. 跳表 Skip List
7.1 跳表数据结构和实现
8. 散列表 Hash Table(哈希表)
8.1 散列表结构和实现(线性探测法&拉链法)
8.2 Hash算法及其应用场所
8.3 练习
9. 二叉树 Binary Tree
9.1 二叉树及其遍历
9.2 二叉查找树
9.3 红黑树
9.4 堆
9.5 线段树(Segment Tree)
9.6 树状数组
9.7 并查集(Disjoint-Set)
9.x 练习
- POJ 1577 给定叶子节点求二叉查找树
- POJ 2255 Tree Recovery(已知前序&中序,求后序)
- LeetCode 1008. 先序遍历构造二叉树(已知先序,求二叉搜索树)
- POJ 2388 Who’s in the Middle(求中位数)
- POJ 1442 Black Box(大小堆,求第K小的元素)
- LeetCode 230. 二叉搜索树中第K小的元素(中序遍历)
- LeetCode 173. 二叉搜索树迭代器(中序遍历)
- LeetCode 144. 二叉树的前序遍历(前序遍历)
- LeetCode 94. 二叉树的中序遍历(中序遍历)
- LeetCode 145. 二叉树的后序遍历(后序遍历&总结)
- LeetCode 671. 二叉树中第二小的节点
- LeetCode 257. 二叉树的所有路径(DFS)
- LeetCode 617. 合并二叉树
10. 图 Graph
10.1 图的存储及其BFS/DFS搜索
10.2 最小生成树
10.3 拓扑排序
10.4 最短路径算法 Shortest Path
10.x 练习
11. 字符串匹配 string matching
11.1 BF & RK算法
11.2 BM算法
11.3 KMP算法
11.4 Trie树算法
11.5 AC自动机算法
11.x 练习
12. 贪心算法 Greedy Algorithm
12.1 找零钱、区间覆盖、霍夫曼编码
12.x 练习
13. 分治算法 Divide & Conquer
13.1 分治算法介绍
13.x 练习
14. 回溯算法 Backtracking
14.1 简介 & 八皇后问题
14.2 回溯应用-- 0-1背包问题
14.x 练习
15. 动态规划算法 Dynamic Programming
15.1 0-1背包问题(DP解法)
15.2 动态规划理论学习
15.3 搜索引擎拼写纠错
15.x 练习
- 双11购物凑单
- “杨辉三角”最短路径
- 动态规划应用–找零钱
- POJ 1276 ATM凑钱(动态规划)
- 动态规划应用–最长递增子序列
- LeetCode 53. 最大子序和(动态规划)
- LeetCode 70. 爬楼梯