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

1.链表 Linked List

1.1 单链表

1.2 练习

  • 判断字符串是否为回文串
  • 约瑟夫环问题
  • LRU缓存策略
  • 单链表的归并排序
  • 单链表中环的检测
  • POJ 1250 计算流失的顾客数
  • LeetCode 206. 反转链表

2.栈 Stack

2.1 顺序栈、链式栈

2.2 共享顺序栈

2.3 练习

  • POJ 1028 浏览器前进后退
  • POJ 1363 火车厢排队
  • LeetCode 557. 反转字符串中的单词 III(栈)

3.队列 Queue

3.1 链式队列、顺序队列

3.2 循环顺序队列

3.3 练习

  • 打印杨辉三角
  • POJ 2259 团队排队问题
  • POJ 1581 优先队列 priority_queue 比赛胜者求解
  • POJ 3481 double queue

4.递归 Recursion

4.1 走台阶问题

4.2 汉诺塔问题

4.3 练习

  • POJ 1664 苹果放盘子

5.排序 Sorting

5.1 十种基本的排序算法

5.2 快速排序的优化1— 快速排序细节优化2

5.3 练习

  • POJ 1007 DNA排序
  • POJ 1804 求解逆序数
  • 寻找数组内第K大的元素
  • 大小写字母数字分离

6.二分查找 Binary Search

6.1 查找给定条件的值

6.2 练习

  • 求平方根
  • POJ 3122 怎么吃更多的披萨
  • POJ 1064 分割线缆
  • POJ 2785 求4数之和为0的方案数
  • LeetCode 35. 搜索插入位置(二分查找)

7. 跳表 Skip List

7.1 跳表数据结构和实现


8. 散列表 Hash Table(哈希表)

8.1 散列表结构和实现(线性探测法&拉链法)

8.2 Hash算法及其应用场所

8.3 练习

  • POJ 1200 计算子串种类
  • POJ 2785 求4数之和为0的方案数(哈希法)
  • LeetCode 771. 宝石与石头(哈希)
  • LeetCode 535. TinyURL 的加密与解密(哈希)

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

  • 寻找社交网络n度好友
  • 农夫过河问题

11. 字符串匹配 string matching

11.1 BF & RK算法

11.2 BM算法

11.3 KMP算法

11.4 Trie树算法

11.5 AC自动机算法

11.x 练习

  • POJ 1936 字符匹配(暴力匹配)
  • POJ 3690 找星座(二维匹配)
  • POJ 3461 字符串匹配

12. 贪心算法 Greedy Algorithm

12.1 找零钱、区间覆盖、霍夫曼编码

12.x 练习

  • POJ 2453 二进制数字问题
  • POJ 2287 田忌赛马问题
  • 汽车加油次数问题

13. 分治算法 Divide & Conquer

13.1 分治算法介绍

13.x 练习

  • POJ 1804 归并求逆序数
  • 最近点对问题 & POJ 3714
  • 万里挑一 找假硬币

14. 回溯算法 Backtracking

14.1 简介 & 八皇后问题

14.2 回溯应用-- 0-1背包问题

14.x 练习

  • POJ 1753 Flip Game
  • POJ 1321 棋盘问题
  • POJ 2965 开冰箱的门
  • LeetCode 17. 电话号码的字母组合(回溯)
  • LeetCode 113. 路径总和 II(回溯)

15. 动态规划算法 Dynamic Programming

15.1 0-1背包问题(DP解法)

15.2 动态规划理论学习

15.3 搜索引擎拼写纠错

15.x 练习

  • 双11购物凑单
  • “杨辉三角”最短路径
  • 动态规划应用–找零钱
  • POJ 1276 ATM凑钱(动态规划)
  • 动态规划应用–最长递增子序列
  • LeetCode 53. 最大子序和(动态规划)
  • LeetCode 70. 爬楼梯

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. 除自身以外数组的乘积

《数据结构与算法之美》学习汇总相关推荐

  1. 数据结构与算法之美学习笔记:哈希算法-哈希算法在分布式系统中有哪些应用(第22讲)...

    上一节,我讲了哈希算法的四个应⽤,它们分别是:安全加密.数据校验.唯⼀标识.散列函数.今天,我们再来看剩余三种应用: 负载均衡.数据分片.分布式存储 你可能已经发现,这三个应用都跟分布式系统有关.没错 ...

  2. 推荐学习-数据结构与算法之美

    推荐一个学习资源:数据结构与算法之美.主要包括以下几个学习内容: 20个经典数据结构与算法 100个真实项目场景案例 文科生都能看懂的算法手绘图解 轻松搞定BAT的面试通关秘籍 作者:王争 前谷歌工程 ...

  3. 数据结构与算法之美(一):概论

    最近在极客时间上面学习王争老师的课程<数据结构与算法之美>,以前虽然学过一些皮毛,但是不够精,作为程序员的基本内功,还是要继续学习.至此通过总结的方式,把这门课的要点记录下来,供自己思考回 ...

  4. 极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图

    菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累 文章目录 数据 ...

  5. mysql索引用trie树_数据结构与算法之美【完整版】

    资源目录: ├─01-开篇词 (1讲) │ ├─00丨开篇词丨从今天起,跨过"数据结构与算法"这道坎.html │ ├─00丨开篇词丨从今天起,跨过"数据结构与算法&qu ...

  6. 《数据结构与算法之美》目录

    数据结构与算法之美_算法实战_算法面试 开篇词 (1讲) <数据结构与算法之美>学习指导手册 开篇词 | 从今天起,跨过"数据结构与算法"这道坎 入门篇 (4讲) 01 ...

  7. 王争数据结构与算法之美开篇问题整理

    数据结构与算法之美笔记整理 为什么大多数编程语言中数组从 0 而不是从 1 开始编号? 从数组存储的内存模型上来看,"下标"最确切的定义应该是"偏移(offset)&qu ...

  8. 干货教程:数据结构与算法之美

    特别放送 第⼀期:数据结构与算法学习书单 第⼆期:争哥独家学习⼼得 第三期:算法实战测试题 第四期:⼤咖的专栏学习⽅法 ⽤户故事 1:这⼀年我的脑海⾥只有算法 ⽤户故事 2:只有站在思维的⾼处,才有⾜ ...

  9. 数据结构与算法之美-目录

    复杂度分析 数组 栈 队列 链表 递归 排序 二分查找 跳表 散列表 哈希算法 二叉树 红黑树 B+树 堆与堆排序 图的表示 深度广度优先搜索 拓扑排序 最短路径 A*算法 字符串匹配(BF RK) ...

最新文章

  1. 有关Spring 3.0的发布
  2. C++结构体,联合体
  3. 【重大更新】DevExpress v17.1新版亮点(DevExtreme HTML5/JS篇)
  4. 拒绝平庸--浅谈WEB登录页面设计
  5. 内附视频讲解 | 券商财富管理数字化转型趋势分析与六大驱动力解读
  6. BZOJ-1192-鬼谷子的钱袋
  7. yum java 1.7_centos通过yum安装jdk1.7或1.8
  8. ora-07445 oracle 9,Oracle ORA-07445 : 出现异常错误: 核心转储(一)
  9. 为什么word下面有红线_这4个Word细节不做好,老板看了都想骂人!赶紧记下来
  10. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)
  11. [ZJOI 2012]灾难
  12. 读书笔记 - 《软件业的成功奥秘》
  13. Vue3 + Typescript + Node.js 搭建elementUI使用环境
  14. 数据结构——>线索化二叉树
  15. VSS2005的安装与配置
  16. Python多线程好玩弹窗代码
  17. CentOS系统查看本机IP地址
  18. 苹果电脑安装双系统教程(使用bootcamp手动完成/MacOS X+Windows10双系统)
  19. DTAS棣拓公差分析软件-公差仿真模拟软件-几何尺寸与公差软件-三维公差分析软件
  20. iceberg-flink 八:累积窗口使用。(CUMULATE)

热门文章

  1. mysql 集群架构_mysql企业常用集群架构
  2. Python脚本实现图片加水印
  3. dmp文件查看表空间_innoDb文件
  4. TeamViewer - 最好用强大的免费跨平台远程桌面控制软件 (支持电脑和手机)
  5. C++基础之this指针的详解
  6. 上机环境是什么意思_Python能不能自学,可以找到什么工作?
  7. js for in 遍历对象与数组
  8. 【转】JMeter学习(十三)分布式部署
  9. 《C程序设计语言》-第2章-习题
  10. PythonR语言-python和r相遇