数据结构与算法学习指南

发表时间: 2021-09-21 19:54

基础学习方法

数据结构与算法也是一门课程,基础的学习方法同样需要。

首先我们需要保证时间和精力的投入。它是一个高度抽象的知识,从各种开发场景中抽离出来的底层共性。学习时经常会遇到难以理解的点,需要认真停下来思考,再不懂,就得请教别人。

其次需要确定自己的刻意练习方案,根据不同的时期和自己的情况调整。

之后就是复习,刚开始的一段时间一定要及时,不然很容易遗忘。我的复习流程是:

  1. 有时间就思考相应的内容,做成思维导图。
  2. 讲给别人听,或者与别人讨论相关的知识点。
  3. 书写成文章。
  4. 晨读:一般优先自己写的文章或思维导图。

其他要注意的就是顺序:由易到难,由面到点再由点到面。个人觉得《算法导论》的前几单其实更不好理解。适当调整一些顺序,其实影响不大。

学习一个新的课程,我一般会先了解整个骨架是什么样的。数据结构和算法也是一样,这就是初步的知识结构。你可以从目录里得到,然后进入相应的知识点,了解大概的意思。这种方式形成的知识结构其实还是很脆弱的,还需要一个个深入理解。然后再重新梳理各个知识点之间的关系。

拆分知识点

每个人的方式不同。我一般会拆分成数据结构和算法两大部分。

对数据结构:根据数据关系进行拆分和归类。对每个数据结构的理解,会从定义及作用、数据操作、逻辑关系和存储结构入手,以保证理解这个数据结构。

对算法:首先是了解时间和空间复杂度。其次是各种算法,理解他们的实现过程及优劣。

刻意练习

在觉得理解某个知识点后,就可以进行练习,主要有3种方式:

  1. leetcode
  2. 阅读源码
  3. 日常开发运用

对leetcode: 在理解了某个知识点后,就可以通过筛选相应的类型及难度来学习运用。

  1. 先要明确题目的意思。
  2. 思考所有可能的写法,思考时尽可能回归自己的知识结构。
  3. 写代码实现。
  4. 测试和调试。
  5. 与别人的答案对比。

对阅读源码:比如Vue,它的整个库,在我看来就是一个大的数据结构。Vue解决各种问题的过程中,就能看到算法的应用。

对日常开发:一般会记录相应的应用场景。有实际项目的上下文环境,理解和记忆会更深刻。