学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错。整理汇总一下作为笔记。


一.复杂度分析

非常重要。我们必须掌握,基本上要做到,简单代码能很快分析出时间、空间复杂度;对于复杂点的代码,比如递归代码,也要掌握这两种分析方法:递推公式和递归树。

难易程度:Medium

是否重点:10 分

掌握程度:能自行分析大部分数据结构和算法的时间、空间复杂度


二.数组、栈、队列

这一部分内容非常简单,初学者学起来也不会很难。但是,作为基础的数据结构,数组、栈、队列,是后续很多复杂数据结构和算法的基础,所以,这些内容我们一定要掌握。

难易程度:Easy

是否重点:8 分

掌握程度:能自己实现动态数组、栈、队列


三.链表

链表非常重要!虽然理论内容不多,但链表上的操作却很复杂。所以,我们经常会被考察,一定要掌握。而且,我们这里说“掌握”不只是能看懂相关的内容,还能将相关的经典链表题目,比如链表反转、求中间结点等,轻松无 bug 地实现出来。

难易程度:Medium

是否重点:9 分

掌握程度:能轻松写出经典链表题目代码


四.递归

对于初学者来说,递归代码非常难掌握,不管是读起来,还是写起来。但是,这道坎你必须要跨过,跨不过就不能算是入门数据结构和算法。我们后面讲到的很多数据结构和算法的代码实现,都要用到递归。

递归相关的理论知识也不多,所以还是要多练。你可以先在网上找些简单的题目练手,比如斐波那契数列、求阶乘等,然后再慢慢过渡到更加有难度的,比如归并排序、快速排序、二叉树的遍历、求高度,最后是回溯八皇后、背包问题等。

难易程度:Hard

是否重点:10 分

掌握程度:轻松写出二叉树遍历、八皇后、背包问题、DFS 的递归代码


五.排序、二分查找

这一部分并不难,我们只需要能看懂相关的内容即可。

难易程度:Easy

是否重点:7 分

掌握程度:能自己把各种排序算法、二分查找及其变体代码写一遍就可以了


六.跳表

对于初学者来说,并不需要非得掌握跳表,所以,如果没有精力,这一章节可以先跳过。

难易程度:Medium

是否重点:6 分

掌握程度:初学者可以先跳过。如果感兴趣,看懂相关内容即可,不需要掌握代码实现


七.散列表

总体上来讲,这块内容理解起来并不难。但是,作为一种应用非常广泛的数据结构,我们还是要掌握牢固散列表。

难易程度:Medium

是否重点:8 分

掌握程度:对于初学者来说,自己能代码实现一个拉链法解决冲突的散列表即可


八. 哈希算法

这部分纯粹是为了开拓思路,初学者可以略过。

难易程度:Easy

是否重点:3 分

掌握程度:可以暂时不看


九. 二叉树

这一部分非常重要!二叉树经常会被考到,所以要重点掌握。但是我这里说的二叉树,并不包含红黑树的内容。红黑树我们待会再讲。

难易程度:Medium

是否重点:9 分

掌握程度:能代码实现二叉树的三种遍历算法、按层遍历、求高度等经典二叉树题目


十.红黑树

对于初学者来说,这一节课完全可以不看。

难易程度:Hard

是否重点:3 分

掌握程度:初学者不用把时间浪费在上面


十一.B+ 树

虽然 B+ 树也算是比较高级的一种数据结构了,但是对初学者来说,也不是重点。有时候还是会被考察的,所以这一部分内容,我们能看懂相关的讲解就可以了。

难易程度:Medium

是否重点:5 分

掌握程度:可看可不看


十二.堆与堆排序

这一部分内容不是很难,初学者也是要掌握的。

难易程度:Medium

是否重点:8 分

掌握程度:能代码实现堆、堆排序,并且掌握堆的三种应用(优先级队列、Top k、中位数)


十三.图的表示

图的内容很多,但是初学者不需要掌握那么多。一般不怎么考察。但是,最基本图的概念、表示方法还是要掌握的。

难易程度:Easy

是否重点:8 分

掌握程度:理解图的三种表示方法(邻接矩阵、邻接表、逆邻接表),能自己代码实现


十四. 深度广度优先搜索

这算是图上最基础的遍历或者说是搜索算法了,所以还是要掌握一下。这两种算法的原理都不难哈,但是代码实现并不简单,一个用到了队列,另一个用到了递归。对于初学者来说,看懂这两个代码实现就是一个挑战!可以等到其他更重要的内容都掌握之后,再来挑战,也是可以的。

难易程度:Hard

是否重点:8 分

掌握程度:能代码实现广度优先、深度优先搜索算法


十五. 拓扑排序、最短路径、A* 算法

这几个算法稍微高级点。如果你能轻松实现深度、广度优先搜索,那看懂这三个算法不成问题。不过,这三种算法不是重点。我们不会被考察的。

难易程度:Hard

是否重点:5 分

掌握程度:有时间再看,暂时可以不看


十六.字符串匹配(BF、RK)

BF 非常简单,RK 稍微复杂点,但都不难。这个最好还是掌握下。

难易程度:Easy

是否重点:7 分

掌握程度:能实践 BF 算法,能看懂 RK 算法


十七.字符串匹配(BM、KMP、AC 自动机)

这三个算法都挺难的,对于算法有一定基础的人来说,看懂也不容易。所以,对于初学者来说,千万别浪费时间在这上面。即便有余力,看懂就好了,不用非得能自己实现。

难易程度:Hard

是否重点:3 分

掌握程度:初学者不用把时间浪费在上面


十八.字符串匹配(Trie)

这个还是要能看懂,不过不需要能代码实现。有些人喜欢考这个东西,主要是结合应用场景来考察,只是看你知不知道要用 Trie 树这个东西。

难易程度:Medium

是否重点:7 分

掌握程度:能看懂,知道特点、应用场景即可,不要求代码实现


十九.位图

位图不是重点,如果有余力最好掌握一下。

难易程度:Easy

是否重点:6 分

掌握程度:看懂即可,能自己实现一个位图结构最好


二十.四种算法思想

这个是重点,也是难点。贪心、分治、回溯、动态规划,每一个都不简单,其中动态规划又是最难、最烧脑的。要攀登大山,必须拿下这块内容。但是呢,学习要循序渐进,这块内容的学习可以放到最后,做个长时间的学习计划来攻克。这块内容理论的东西不多,要想真的掌握,还是要大量刷题。

难易程度:Hard

是否重点:10 分

掌握程度:可以放到最后,但是一定要掌握!做到能实现 Leetcode 上 Medium 难度的题目



往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
本站qq群704220115,加入微信群请扫码:

【算法基础】常用的数据结构与算法相关推荐

  1. 【算法】常用的数据结构与算法

    学习了王争老师的数据结构与算法之美之后,比较有感触,他把我们常用的数据结构和算法都讲了一遍,而且讲的还不错.整理汇总一下作为笔记. 一.复杂度分析 非常重要.我们必须掌握,基本上要做到,简单代码能很快 ...

  2. Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程

    Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...

  3. 游戏制作中的大宝剑---常用的数据结构与算法

    前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为了方便大家阅读,个人认为 ...

  4. 一篇关于 JS 常用的数据结构与算法万字总结

    一.前言 首先,为什么我会学习数据结构与算法呢,其实主要是有两方面 第一,是我在今年的flag里明确说到我会学这个东西 第二,学了这些,对自己以后在工作或者面试也会带来许多好处 然后,本文是最近学习的 ...

  5. 游戏开发中常用的数据结构和算法

    转载Loving_初衷 前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为 ...

  6. 尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业01

    尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业第一题 要求: 1)在前面的基础上,将稀疏数组保存到磁盘上,比如map.data 2) 恢复原来的数组时,读取map.data进行恢复 ...

  7. 算法基础--优惠券问题(贪心算法)

    算法基础–优惠券问题(贪心算法) 近期某商场由于周年庆,开启了"0元购"活动.活动中,消费者可以通过组合手中的代金券,实现0元购买指定商品. 聪明的小团想要用算法来帮助他快速计算: ...

  8. 基础面试题 — 数据结构与算法

    数据结构 数据结构是对实际问题中的数据元素及相互间的联系的抽象.一般用线性表来表示常用数据结构,线性表分为顺序存储的顺序表和连式存储的链表. 常用数据结构 在学习算法之前,必须要了解一些常用数据结构的 ...

  9. 数据结构和算法 java实现_数据结构与算法——常用数据结构及其Java实现

    前言 仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛.所以准备在这里搞一个系列的文章,以期透彻. 本系列 ...

最新文章

  1. 前端文章精选- 收藏集 - 掘金
  2. WEB测试 test case测试点
  3. 虚拟主机上传SQLServer数据库--不完全资料
  4. book: Effective Java
  5. Oracle入门(七)之表空间
  6. CentOS查看每个进程的网络流量
  7. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
  8. openresty之http
  9. h710阵列卡支持最大硬盘_戴尔PowerEdge RAID控制卡使用示例(PERC H710P为例)
  10. CentOS + PyCharm 环境下使用 LIBSVM(及 unresolved reference 问题的解决)
  11. collections.OrderedDict()
  12. 三菱电机NC monitor 序列号申请
  13. php无法找到该页,UCHOME出现问题(转帖)
  14. 课后习题3.4 编程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和cout语句输出这两个字符。并思考以下问题: (1)变量c1,c2应定义为字符型还是整形?抑或两者皆
  15. 计算机科学与技术光学成像专业,光信息科学与技术专业就业方向有哪些
  16. 有道字典 Chrome Extension
  17. 【云原生学习】史上最全Prometheus学习笔记
  18. PBOC借/贷记IC卡终端专用参数信息
  19. 一个上进的程序员是如何在工作中废掉的
  20. 教育部2012年计算机评估,教育部2012年度学科评估结果(0812 计算机科学与技术)

热门文章

  1. FastReport4.6程序员手册_翻译 转
  2. 一个时间日期转换格式的小功能(Oracle)
  3. 18.Mysql SQL优化
  4. RocketMQ事务消息实现分析
  5. DefaultSingletonBeanRegistry源码解析
  6. pdf2swf无法转换某些文档,提示缺少字体时的处理
  7. 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例...
  8. 构造函数实现窗体间传值
  9. Effective C# Item45 : 优先选择强异常安全保证
  10. 2021-11-18Collections