阅读 11

02如何抓住重点,系统高效地学习数据结构与算法?

以下内容总结自极客时间王争大佬的《数据结构与算法之美》课程,本文章仅供个人学习总结。

什么是数据结构?什么是算法?

从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。

类比图书馆的书籍,我们如果想找一本书可以有很多种方法能找到这本书,可以从头一本一本找,也可以根据分类来缩小范围找。毫无疑问后一种耗时更少。这就是生活中的算法。

算法和数据结构是联系在一起的,特定的数据结构有特定的算法去操作,数据结构为算法提供服务,算法又依赖于特定的数据结构。比如广度优先遍历就可以作用在树或者图上,但是没有对数组进行广度优先遍历的。

数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。

学习的重点在什么地方?

  1. 复杂度分析(重要) 数据结构和算法的半壁江山,是数据结构和算法学习的精髓(数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。所以,如果你只掌握了数据结构和算法的特点、用法,但是没有学会复 杂度分析,那就相当于只知道操作口诀,而没掌握心法。只有把心法了然于胸,才能做到无招胜有招!)
  2. 10种数据结构(数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树)和10种常用算法(递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法)

3. 切记不要只是死记硬背,不要为了学习而学习,而是要学习它的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”,多辩证地思考,多问为什么

一些可以让你事半功倍的学习技巧

  1. 边学边练,适度刷题

    “边学边练”这一招非常有用。建议你每周花1~2个小时的时间,集中把这周的三节内容涉及的数据结构和算法,全都自己写出来,用代码实现一遍。这样一定会比单纯地看或者听的效果要好很多!

  2. 多问、多思考、多互动

    学习最好的方法是,找到几个人一起学习,一块儿讨论切磋,写博客是一件可以交流和思考的很好的方式

  3. 打怪升级学习法

    每节课后都写一篇学习笔记或者学习心得,可以不用太长,但是一定要有思考。证明自己有进步

  4. 知识需要沉淀,不要想试图一下子掌握所有

    在学习的过程中,一定会碰到“拦路虎”。如果哪个知识点没有怎么学懂,不要着急,这是正常的。因为,想听一遍、看一遍就把所有知识掌握,这肯定是不可能的。学习知识的过程是反复迭代、不断沉淀的过程。 如果碰到“拦路虎”,可以请教他人,或者可以先沉淀一下,过几天再重新学一遍。所谓,书读百遍其义自见,我觉得是很有道理的!

课后思考

思考学习数据结构与算法的方法。另外,你在之前学习数据结构和算法的过程中,遇到过什么样的困难或者疑惑吗?

主要是利用每天的通勤时间听大佬的课程,对照着讲义看,然后每次听完一节课些一篇总计记录下本节的内容和自己的思考,将自己的小节记录放在github上,能够促进自己坚持下去。

最近刷leecode就碰到了一个动态规划的问题,断断续续想了一周没有解决,代码很简单,但是自己对动态规划的思维方式有些不理解,导致卡顿。所以订了大佬的课程想系统的学习数据结构与算法。

关注下面的标签,发现更多相似文章
评论