话说作为一名程序员,肯定都少不了在准备面试的时候刷 LeetCode 的算法题吧。虽然面试考察的算法题在工作中用到的非常少,但是确实是能让我们对常用的数据结构有更深刻的理解,以及对思维逻辑有很大的提升。
不过枯燥的刷题可能让新手无从下手,在这里我就给大家分享一个超棒的算法学习项目——hello-algo。
hello-algo 旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂,学习曲线平滑。算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、Rust、C 和 Zig 等语言。鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。
如果你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与不会之间反复横跳,那么本书非常适合你。
如果你已经积累一定的刷题量,熟悉大部分题型,本书可助你回顾与梳理算法知识体系,仓库源代码可以当作“刷题工具库”或“算法字典”来使用。
所以无论你日常使用的事什么语言,都可以在这个项目的学习过程中获取对应的案例快速上手。
hello-algo 项目的思维导图如下所示:
相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在项目中,重点和难点知识主要通过动画以图解形式展示,而文字则作为解释与补充。
不仅如此,还支持代码实践的方式来加深算法理解。
如果时间允许,建议参照代码自行敲一遍。如果学习时间有限,请至少通读并运行所有代码。
与阅读代码相比,编写代码的过程往往能带来更多收获。动手学,才是真的学。
以深度遍历树型结构为例,代码示例如下图!
当然,如果你把整个工程都 clone 到本地,也可以直接根据代码文件名找到例子直接运行即可,更加方便快捷。
hello-algo 是我截止到目前见到的最好的算法学习教程,通过图片、动画、代码多管齐下的方式,可以让初学者少走很多弯路,更容易理解算法知识。而对于经验丰富的程序来说,也可以用 hello-algo 来重新梳理自己算法的知识体系。
开源项目地址如下!
项目地址:https://github.com/krahets/hello-algo
教程首页:https://www.hello-algo.com/