数据结构与算法也是一门课程,基础的学习方法同样需要。
首先我们需要保证时间和精力的投入。它是一个高度抽象的知识,从各种开发场景中抽离出来的底层共性。学习时经常会遇到难以理解的点,需要认真停下来思考,再不懂,就得请教别人。
其次需要确定自己的刻意练习方案,根据不同的时期和自己的情况调整。
之后就是复习,刚开始的一段时间一定要及时,不然很容易遗忘。我的复习流程是:
其他要注意的就是顺序:由易到难,由面到点再由点到面。个人觉得《算法导论》的前几单其实更不好理解。适当调整一些顺序,其实影响不大。
学习一个新的课程,我一般会先了解整个骨架是什么样的。数据结构和算法也是一样,这就是初步的知识结构。你可以从目录里得到,然后进入相应的知识点,了解大概的意思。这种方式形成的知识结构其实还是很脆弱的,还需要一个个深入理解。然后再重新梳理各个知识点之间的关系。
每个人的方式不同。我一般会拆分成数据结构和算法两大部分。
对数据结构:根据数据关系进行拆分和归类。对每个数据结构的理解,会从定义及作用、数据操作、逻辑关系和存储结构入手,以保证理解这个数据结构。
对算法:首先是了解时间和空间复杂度。其次是各种算法,理解他们的实现过程及优劣。
在觉得理解某个知识点后,就可以进行练习,主要有3种方式:
对leetcode: 在理解了某个知识点后,就可以通过筛选相应的类型及难度来学习运用。
对阅读源码:比如Vue,它的整个库,在我看来就是一个大的数据结构。Vue解决各种问题的过程中,就能看到算法的应用。
对日常开发:一般会记录相应的应用场景。有实际项目的上下文环境,理解和记忆会更深刻。