如何有效刷题?初学者的算法学习指南
如何有效地进行算法题的练习?这是初学者的最新学习基地。
算法是非常重要的,但同时也是学习过程中最具挑战性的部分。面对众多算法,初学者常常不知道如何入手。
许多人在开始刷题时感到困惑,不知道该从哪里开始,也难以理解他人提供的题解。思路时常混乱,常常认为某个知识点重要,而不知自己是否走上了错误的道路,导致学习时间和精力都被浪费。
实际上,学习算法并不仅仅依赖于智力,还需要掌握科学的方法。
学习算法可以通过后天的努力和技巧来实现,找到合适的方法可以让学习事半功倍。
最近在 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 算法的动图。
在清晰介绍完算法后,接下来是根据算法解决经典问题,并将思路转化为代码。当你理解了题目并推导出了解法后,才开始考虑如何将思路转化为代码。
有时,将思路转化为算法是简单自然的,但在某些情况下,这个过程会相对困难。
项目作者在将思路转化为代码方面做得非常出色,他对题目描述、解析和代码的讲解都非常清晰,依据他的思路,读者可以快速掌握算法的核心,省时又省力。
在数组篇中,以两数之和为例,作者将其分解为题目描述、示例、双指针(暴力)法、解析、题目代码、哈希表、动图解析等内容。
哈希表的解析中,作者描述道:“哈希表的做法很容易理解,我们只需通过一次循环即可。假设我们的目标值为9,当前指针指向的值为2,我们只需从哈希表中查找是否含有7,因为9 – 2 = 7。如果含有7,我们直接返回;如果不含有,则将当前的2存入哈希表中,指针移动到下一元素。注:key 为元素值,value 为元素索引。”接下来是动图展示。

哈希表解析动图展示。
本文仅介绍了两个算法示例,初学者在刷题时若不知如何入手,可以按照项目作者的思路进行练习,基础掌握后循序渐进,必能取得良好的效果。