字符串|刷题太遭罪怎么办?这个算法基地专为小白量身打造,还带动画


字符串|刷题太遭罪怎么办?这个算法基地专为小白量身打造,还带动画
文章图片

机器之心报道
编辑:陈萍

如何有效地刷算法题?刷题小白最新打卡地 。
算法很重要 , 但算法也是学起来最难 , 最令人生畏的 。 算法千千万 , 不知该如何下手?
经常看到有人抱怨:刚开始刷题时 , 自己很迷茫 , 不知道从何刷起 , 也看不懂别人写的题解 。 思路飞来飞去 , 有时候以为是这个知识点重要 , 但有时又认为自己走错了路 , 结果学了半天 , 越刷越乱 , 时间、经历都白白浪费 。
其实 , 学算法 , 刷题蛮干是不行的 , 需要遵循科学的方法 。
学习算法可能并不只是拼智商 , 可以通过后天的学习进行掌握 , 这就需要讲究技巧 。 方法找对了 , 可以起到事半功倍的效果 。
近日 , 在 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 为元素索引 。 」然后就是动图展示 。

字符串|刷题太遭罪怎么办?这个算法基地专为小白量身打造,还带动画
文章图片

哈希表解析动图展示 。
【字符串|刷题太遭罪怎么办?这个算法基地专为小白量身打造,还带动画】本文只介绍了其中两个算法示例 , 刚开始刷题的同学 , 如果不知道该怎么刷 , 可以按照项目作者给出的思路 , 一气刷下来 , 算法基础应该问题不大 , 循序渐进 , 必能取得好的效果 。

    推荐阅读