飞道的博客

《数据结构与算法之美》学习汇总

442人阅读  评论(0)

此篇文章是对自己学习这门课程的一个总结和课后的一些练习,做一个汇总,希望对大家有帮助。本人是半路程序员,2018年2月开始学习C++的,下面的代码基本都是C++11版本的,代码有错误的地方请不吝留言赐教。附有部分练习LeetCodePOJ的题目。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 练习


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 练习


16. 高级篇

16.1 数据结构–位图 BitMap

16.2 朴素贝叶斯算法过滤垃圾短信

16.3 向量空间 Vector Space – 推荐系统

16.4 B+树 – MySQL数据库索引

16.5 A*搜索算法–游戏寻路

16.6 索引 Index – 快速查找数据

16.7 并行算法 Parallel Algorithm – 提高执行效率


17. 实战篇

17.1 Redis常用数据类型的数据结构

17.2 搜索引擎背后的数据结构和算法

17.3 短网址系统

17.4 如何选择数据结构和算法


18.练习题

18.1 LeetCode 15. 三数之和

18.2 LeetCode 169. 求众数

18.3 LeetCode 41. 缺失的第一个正数

18.4 LeetCode 141. 环形链表

18.5 LeetCode 23. 合并K个排序链表

18.6 LeetCode 20. 有效的括号(栈)

18.7 LeetCode 32. 最长有效括号(栈&DP)

18.8 LeetCode 150. 逆波兰表达式求值(栈)

18.9 LeetCode 641. 设计循环双端队列

18.10 LeetCode 239. 滑动窗口最大值(双端队列)

18.11 LeetCode 151. 翻转字符串里的单词(栈)

18.12 LeetCode 226. 翻转二叉树(DFS\BFS)

18.13 LeetCode 104. 二叉树的最大深度

18.14 LeetCode 111. 二叉树的最小深度

18.15 LeetCode 102. 二叉树的层次遍历

18.16 LeetCode 98. 验证二叉搜索树

18.17 LeetCode 112. 路径总和

18.18 LeetCode 200. 岛屿数量(图的遍历)

18.19 LeetCode 36. 有效的数独(哈希)

18.20 LeetCode 322. 零钱兑换(DP)

18.21 LeetCode 152. 乘积最大子序列(DP)

18.22 LeetCode 64. 最小路径和(DP)

18.23 LeetCode 121. 买卖股票的最佳时机

18.24 LeetCode 221. 最大正方形(DP)

18.25 LeetCode 88. 合并两个有序数组

18.26 LeetCode 21. 合并两个有序链表(单链表)

18.27 LeetCode 977. 有序数组的平方

18.28 LeetCode 986. 区间列表的交集

18.29 LeetCode 56. 合并区间(优先队列)

18.30 LeetCode 46. 全排列(回溯)

18.31 LeetCode 47. 全排列 II(回溯+搜索剪枝)

18.32 LeetCode 122. 买卖股票的最佳时机 II

18.33 LeetCode 142. 环形链表 II(链表环的检测)

18.34 LeetCode 287. 寻找重复数(BitMap)

18.35 LeetCode 268. 缺失数字

18.36 LeetCode 136. 只出现一次的数字(异或^)

18.37 LeetCode 645. 错误的集合

18.38 LeetCode 62. 不同路径(DP)

18.39 LeetCode 78. 子集(回溯)

18.40 LeetCode 90. 子集 II(回溯+剪枝)

18.41 LeetCode 9. 回文数

18.42 LeetCode 160. 相交链表

18.43 LeetCode 89. 格雷编码

18.44 LeetCode 124. 二叉树中的最大路径和

18.45 LeetCode 237. 删除链表中的节点

18.46 LeetCode 206. 反转链表

18.47 LeetCode 146. LRU缓存机制(哈希链表)

18.48 LeetCode 292. Nim 游戏

18.49 LeetCode 155. 最小栈

18.50 LeetCode 61. 旋转链表

18.51 LeetCode 59. 螺旋矩阵 II

18.52 LeetCode 238. 除自身以外数组的乘积


转载:https://blog.csdn.net/qq_21201267/article/details/89459835
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场