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

此篇文章是对自己学习这门课程的一个总结和课后的一些练习,做一个汇总,希望对大家有帮助。本人是半路程序员,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. 除自身以外数组的乘积

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android简单的夜间模式

现在android项目values下打 attrs.xml <?xml version"1.0" encoding"utf-8"?> <resources><attr name"bookimage" format"reference|color" /><attr name"tvcolor" format"reference|color&quo…

三、bootstrap4 组件(警告和提示框、徽章和面包屑、按钮按钮组、卡片、列表组、导航和选项卡、分页和进度条、巨幕和旋转图标、轮播图、折叠菜单、下拉菜单、导航条、滚动监听、轻量弹框、模态框、表单)

1.1 警告提示框 1.2 徽章和面包屑 1.3 按钮和按钮组 1.4 卡片 1.5 列表组 1.6 导航和选项卡 1.7 分页和进度条 1.8 巨幕和旋转图标 1.9 轮播图 1.10 折叠菜单 1.11 下拉菜单 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title&…

吴恩达-《深度学习DeepLearning》汇总目录

从2019年2月底开始学习《数据结构与算法之美》&#xff0c;王争老师的课程非常好&#xff0c;到2019年8月底已经学完一遍&#xff0c;后面还要多次复习巩固以及OJ刷题。生命不息&#xff0c;学习不止&#xff0c;又要开始新的篇章了–《机器学习》&#xff0c;有点小兴奋&#…

javascript常用内置对象总结(重要)

Javascript对象总结 JS中内置了17个对象&#xff0c;常用的是Array对象、Date对象、正则表达式对象、string对象、Global对象 Array对象中常用方法&#xff1a; Concat&#xff08;&#xff09;&#xff1a;表示把几个数组合并成一个数组。 Join&#xff08;&#xff09;&#…

十三、axios框架学习

一、axios的基本使用 1.1 安装axios 执行命令&#xff1a;npm install axios --save 1.2 发送get请求演示 1.3 发送并发请求 有时候, 我们可能需求同时发送两个请求 使用axios.all, 可以放入多个请求的数组.axios.all([]) 返回的结果是一个数组&#xff0c;使用 axios.sp…

LeetCode解题汇总目录

此篇为学习完《数据结构与算法之美》后&#xff0c;在LeetCode刷题的汇总目录&#xff0c;方便大家查找&#xff08;CtrlFind&#xff09;&#xff0c;一起刷题&#xff0c;一起PK交流&#xff01;如果本文对你有帮助&#xff0c;可以给我点赞加油&#xff01; Updated on 2022…

java——IO流整理(一)

一、基础 1.字节、字符 位&#xff08;bit&#xff09;   &#xff1a;二进制中的一个1或0称为1位字节&#xff08;byte&#xff09; &#xff1a;8个二进制位称为一个字节字符     &#xff1a;一个自然符号称为字符。英文符号&#xff08;1个字节&#xff09;、中文符…

Node.js学习笔记

Node介绍 为什么要学习Node.js 企业需求 具有服务端开发经验更改front-endback-end全栈开发工程师基本的网站开发能力 服务端前端运维部署 多人社区 Node.js是什么 Node.js是JavaScript 运行时通俗易懂的讲&#xff0c;Node.js是JavaScript的运行平台Node.js既不是语言&am…

《统计学习方法》学习笔记目录

此篇为 李航老师著的《统计学习方法》的学习笔记汇总&#xff0c;准备学习并敲一敲代码&#xff0c;还请大家不吝赐教&#xff01;updated on 2020.4.26 一些相关的实践&#xff1a;请查阅机器学习 1. 统计学习及监督学习概论 2. 感知机&#xff08;Perceptron&#xff09; …

iOS: 属性声明strong和retain竟然不一样

今天和同事在处理一处用strong声明的Block属性引发的问题时偶然发现的。在诸多教程中都会讲到&#xff1a;声明属性时用strong或者retain效果是一样的&#xff08;貌似更多开发者更倾向于用strong&#xff09;。不过在声明Block时&#xff0c;使用strong和retain会有截然不同的…

一、node.js搭建最简单的服务器

node.js搭建最简单的服务器 代码演示&#xff1a; // 1. 加载http核心模块 var http require(http)// 2. 使用http.createServer()方法创建一个Web服务器 // 返回一个Server实例 var server http.createServer()// 3. 服务器干嘛&#xff1f; // 提供服务&#xff1a; 对数…

DDD 领域驱动设计-如何 DDD?

注&#xff1a;科比今天要退役了&#xff0c;我是 60 亿分之一&#xff0c;满腹怀念&#xff5e;??? 前几天看了园友的一篇文章《我眼中的领域驱动设计》&#xff0c;文中有段话直击痛点&#xff1a;有人误认为项目架构中加入 Repository&#xff0c;Domain&#xff0c;Valu…

二、搭建Apache服务器 模板引擎

1. 案例&#xff1a;搭建简单的Apache服务器 var http require(http) var fs require(fs)var server http.createServer()var wwwDir D:\\CWork\\node.js黑马程序员\\study_nodejs\\day02\\code\\wwwserver.on(request, function(req, res) {var url req.urlfs.readFile(…

三、案例:留言板 url.parse()

1. url.parse()的使用 2. 留言板案例 index.html: <!DOCTYPE html> <!-- saved from url(0027)http://192.168.150.76:3000/ --> <html lang"en"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8…

iOS开发——收集Github上的iOS控件和开发资料

https://github.com/JanzTam/MyGithubMark转载于:https://www.cnblogs.com/adople/p/5391912.html

四、模块系统

什么是模块化 文件作用域(模块是独立的&#xff0c;在不同的文件使用必须要重新引用)【在node中没有全局作用域&#xff0c;它是文件模块作用域】通信规则 加载require导出exports CommonJS模块规范 在Node中的JavaScript还有一个重要的概念&#xff0c;模块系统。 模块作用…

Jquery 实现原理之 Ajax

一&#xff1a;Jquery Ajax底层接口有&#xff1a;$.ajaxPrefilters、$.ajaxTransport、$.ajaxSettings、$ajaxSetup、$ajaxSettings; 其中$.ajaxPrefilters 和 $.ajaxTransport是通过inspectPrefiltersOrTransports构造器来创建的; $.ajaxPrefilters&#xff1a;是一个前置过滤…

一、AJAX学习笔记——原生AJAX (ajax简介、XML简介、ajax优缺点、ajax的使用)

第 1 章&#xff1a;原生 AJAX 1.1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c; 最大的优势&#xff1a;无刷新获取数据。 AJAX 不是新的编程语言&#xff0c;而是…

App安全之网络传输安全

移动端App安全如果按CS结构来划分的话&#xff0c;主要涉及客户端本身数据安全&#xff0c;Client到Server网络传输的安全&#xff0c;客户端本身安全又包括代码安全和数据存储安全。所以当我们谈论App安全问题的时候一般来说在以下三类范畴当中。 App代码安全&#xff0c;包括…

二、nodemon-Node.js 监控工具

nodemon-Node.js 监控工具 https://www.npmjs.com/package/nodemon 这个工具在我们改变了服务端代码时&#xff0c;会自动重启服务器&#xff0c;不需要我们再手动去重启服务器了&#xff0c;方面我们后面调试代码&#xff01; 1. 安装 node &#xff1a;http://nodejs.cn/d…