数据结构和算法是一个程序员的基本功,但在这方面一直是弱项,发毒誓学了几百遍但一直不得要领,所以报名了极客时间的算法大课,跟着谭超再从头到尾刷一遍,希望这次能有质的提升。
极客时间的这个课程,老师规定了每周的学习任务和作业任务,然后老师和助教会进行review,每周都要按时提交,对于加班狗来说却是有些困难,但还是克服下困难把这几周的课程跟下来。
在正式开始算法课之前,谭超老师讲了一些高效学习这门课程的主要事项,比如学习这门课程要以练习为主,看视频和做练习的时间三七开,第二是看视频的时候,在理解的情况下,尽量加快速度,也就是开倍速,第三是在做题的时候不要死磕,做不出来就看答案,然后尽量把实现过程记下来,即使是死记硬背也可以,第四是算题一定不要刷一遍,要根据自己掌握的程度,在间隔时间内反复做几次。
精通一项技能或一个领域分为三步:切碎知识点、针对每个知识点进行刻意反复练习、在练习的过程中形成反馈,对于数据结构和算法来说,知识点主要分为两大块:数据结构、算法,数据结构主要分为线性结构和非线性结构,线性结构包含基础线性结构和高级线性结构,基础线性结构包括数组和链表,高级线性数据结构包括栈、队列、双端队列、映射和集合,非线性数据结构包含树和图,具体的有二叉搜索树、堆、字典树、并查集、线段树等,数据结构是数据的存储结构,算法是在特定数据结构上对数据的操作过程,算法的基础是
if - eles
switch
for / while
递归
所有的算法最终都会回归到上面的操作逻辑上,在此基础上,就演变出了一些高级算法,比如搜索、深度优先搜索、广度优先搜索、动态规划、二分查找、贪心算法。
区分业余和职业选手的方式就是看基本功,职业玩家的基本功都是非常强悍的,在对每一个知识点进行拆解练习时,既要保证练习次数,又要重点练习自己的缺点和弱点的地方、
同时,在刻意练习过程中,要积极寻求反馈,比如写文章、与人交流、找高人指点等等,反馈的积极才能为学习带来更大的动力,同时还能检验自己的学习效果。