如何有效地刷算法题?刷题小白最新打卡地。
算法很重要,但算法也是学起来最难,最令人生畏的。算法千千万,不知该如何下手?
经常看到有人抱怨:刚开始刷题时,自己很迷茫,不知道从何刷起,也看不懂别人写的题解。思绪飞来飞去,有时候以为是这个知识点重要,但有时又认为自己走错了路,结果学了半天,越刷越乱,时间、经历都白白浪费。
其实,学算法,刷题蛮干是不行的,需要遵循科学的方法。
学习算法可能并不只是拼智商,可以通过后天的学习进行掌握,这就需要讲究技巧。方法找对了,可以起到事半功倍的效果。
近日,在 Github 上就有人开源了一个项目,该项目是专门为刚开始刷题的同砚准备的算法基地,项目作家立志用动画将流畅难明的算法说得通俗易懂。上线仅仅两天,收获九百多星。
项目地址:https://github.com/chefyuan/algorithm-base
刷题大纲:https://mp.weixin.qq.com/s/fTMzLrv5Ou2Xf3_br80J0g
科学刷题,有妙招
项目作家分门别类地将算法分成几大部分:数据结构、字符串婚配算法、排序算法、排序算法秒杀题目、数组篇、求和题目、求次数题目、链表篇、双指针、栈和队列等。根据作家的思绪进行刷题,题目应该不大。
在每个算法模块中,包含动画模拟、绘图剖析,可谓是图文并茂,用动画的方式将流畅难明的算法描绘成通俗易懂的语言。
项目作家表示,该项目会一直维护,希望对各位有一丢丢帮助。另外给刚开始刷题,但是不知道从哪里开始刷的同砚,整理了一份刷题大纲,可以先按这个顺序刷,刷完之后应该就能入门了。
在字符串婚配算法模块中,项目作家列举了三个示例:字符串婚配 BF 算法、BM 算法、KMP 算法。
以字符串婚配 BF 算法为例,点击相应的算法,会链接到对应的算法主页。在算法主页,项目作家通过诙谐幽默的话语向读者介绍了什么是字符串婚配。然后进入主题,对这一概念进行定义:设 S 和 T 是给定的两个串,在主串 S 中找到模式串 T 的过程称为字符串婚配,如果在主串 S 中找到 模式串 T ,则称婚配成功,函数回归 T 在 S 中首次出现的位置,否则婚配不成功,回归 -1。然后通过图示的方式供读者了解。
在讲到算法时,项目作家采用动图的形式,将抽象的算法具象化,为很多算法研究者带来便利,通过动图,就能很好地了解算法,这也是该项目最具创新的地方。
字符串婚配 BF 算法动图展现。
将算法向读者介绍清楚后,接着就是根据算法解决经典题目,将思绪转换为代码。当你确定题目都已经了解,并且分析推导出了题目的解法后,你才开始思考如何将自己的思绪转换成代码。
有时,将一个思绪转换成算法是很容易且自然的;但有时,有些思绪转换成代码,是很有难度的事情。
项目作家将思绪转代码这件事做得很好,将题目描绘、题目剖析、题目代码都讲解的非常清楚,根据作家的思绪,很快就能掌握这个算法的精髓,可谓是省时又省力。
在数组篇中,以两数之和为例:项目作家将两数之和分解为题目描绘、示例、双指针(暴力)法、剖析、题目代码、哈希表、动图剖析等内容。
哈希表剖析项目作家是这样描绘的「哈希表的做法很容易了解,我们只需通过一次循环即可,假如我们的 target 值为 9,当前指针指向的值为 2 ,我们只需从哈希表中查找是否含有 7,因为 9 – 2 =7 。如果含有 7 我们直接回归即可,如果不含有则将当前的 2 存入哈希表中,指针移动,指向下一元素。注:key 为元素值,value 为元素索引。」然后就是动图展现。
哈希表剖析动图展现。
本文只介绍了其中两个算法示例,刚开始刷题的同砚,如果不知道该怎么刷,可以按照项目作家给出的思绪,一气刷下来,算法基础应该题目不大,循序渐进,必能取得好的效果。