学习算法这么些年,从小白到大白,刷了几百道算法题,刷题网站大家都推荐了很多。
题是刷不完的,还要学会总结归纳,所以除了刷题网站, @程序员柠檬 再来分享一些算法学习工具和思路。
今天分享主要以下 3 大块内容:
- 算法学习和刷题网站,打好算法基础
- 算法刷题模板,总结套路提升算法思维
- 算法可视化工具,辅助理解晦涩难懂的算法
话不多说,进入正题开始吧!!
算法学习和刷题网站,打好算法基础
LeetCode
这是一个美国在线编程刷题网站,早几年国外知名IT企业如Facebook、Google等考察算法比较多,因此国外找工作的程序员会在上面刷题练习,现如今国内程序员找大厂工作算法也几乎必考,刷题必打卡的网站也是LeetCode,并且目前 LeetCode 推出了中文版本,中文名「力扣」,海量技术面试题库,拥有算法、数据结构、系统设计等1000+题目,帮助你高效提升编程技能。
下面是算法题库截图,题目做了分类,分为简单、中等、困难,对考察的知识点也做了划分,比如:数组、链表、堆、栈、贪心、动态规划等等,可以按照不同的分类去统一刷,加强理解和举一反三。

CodeWar
Codewars是国外的一个在线刷题网站,和LeetCode不同它比较偏重于编程语言相关的内容,目前包含几乎所有主流编程语言,有JavaScript、Python、Java、C++、Go等等,语言是你的兵器任君挑选,并且有完善的激励机制,这里的练习场被称为道场,你可以通过刷题来提高等级,在这里刷题学习就像打怪升级一样刺激,不要沉迷学习无法自拔。


CodeTop
CodeTop用于汇总互联网大厂面试的高频考题 帮助面试者更有针对性地准备面试。
相对于力扣企业题库,CodeTop有以下优点
- 免费开放:汇总的高频题目免费分享给大家
- 分类精细:按岗位、部门进行分类,方便大家更针对性地准备面试
- 题源可靠:全网收录题目考察情况1,渠道不限于牛客、CSDN博客、热心网友分享等
- 本土特色:汇总办公地位于中国大陆的互联网企业

牛客网
牛客网可以练习算法在线编程,不过除了在线算法编程,牛客还包含程序员笔试面试题库、在线编程、招聘求职等内容,讨论区还有内推信息发布,在这里不仅能学算法还能把工作相关的一条龙给安排了,是程序员学习交流面试经验的好去处。

算法刷题模板,总结套路提升算法思维
算法的套路
很多同学刷了很多题,都是机械的刷,追求数量没有质量,也缺乏总结归纳,遇到稍微难一些的变形题就不会做了。
其实算法刷题是有套路可以遵循的,大部分人刷题是为了算法面试,对于非天赋型选手,只要掌握了基本的算法模板,就足够应付笔试面试。
我把题目做了分门归类,几乎所有的算法可以归类到以下 14 种模式:
- 1.滑动窗口
- 2.二指针或迭代器
- 3.快速和慢速指针或迭代器
- 4.合并区间
- 5.循环排序
- 6.原地反转链表
- 7.树的宽度优先搜索(Tree BFS)
- 8.树的深度优先搜索(Tree DFS)
- 9.Two Heaps
- 10.子集
- 11.经过修改的二叉搜索
- 12.前 K 个元素
- 13.K 路合并
- 14.拓扑排序
那要怎么刷才能让自己不感到智商不够呢?
首先你要了解这些模式,然后针对每一种模式去大量练习,比如动态规划,刷他个20道同类型题目,这样下次在遇到变型题也能马上上手。
刚开始,即使是同一道题,第一次做出来了,隔几天再来也是毫无头绪,非常正常,不要怀疑自己!
这时我每一次刷题,会把这次的思考和遇到的问题,为什么没写出来的原因,记录下来,以便每次都能有进步。
这就是「总结归纳」,比如下面是我曾经对「整数拆分」这道题的做题笔记记录:
我记性不太好,脑子也没有特别聪明,每刷一次记录一次,开头是时间,后面是做题备注,类似错题笔记一样,如果你没有什么好的方法,强烈建议也像我这样记录,别着急,慢慢来,量变引起质变!

这些套路模板,刷题量足够自己能摸索归纳出来。但也有捷径可以走,那就是参考其他人总结归纳好的算法套路。
分享一些大神归纳好的算法套路和模板。
算法小抄
算法小抄的作者labuladong,按他自己的说法自己是一位饱受算法之苦的硬核朋克,所以在Github创建了一个手把手教你算算法的项目,fucking-algorithm
简单粗暴,fuxx
算法,中文名称「去他丫的算法」,这个翻译也是非常精准了,透过名字都能感受到,作者手撕算法的气势。
两个月收获40K的star,多次登顶Github Trending榜首!
仓库总共 60 多篇原创文章,都是基于 LeetCode 的题目,涵盖了所有题型和技巧,而且一定要做到举一反三,通俗易懂,绝不是简单的代码堆砌。
话不多说,直接看项目目录:

基于这个项目他写了一本书,名叫「labuladong的算法小抄」也已经出版了,我恰好也认识作者,书刚出版的时候在给大家抽奖送了几本,以后有这样的福利也会带给大家。
LeetCode101题解
这份刷题笔记是谷歌工程师高畅,总结自己秋招刷算法题经验,把刷过的101道算法题按考察的知识点,分类归纳总结成电子书开源。
更重要的是,书中的代码都可以在 LeetCode 上正常运行,且几乎是最快或最省空间的解法!
LeetCode刷题网站上有众多的题型,这本算题笔记将题型按难易程度进行了归类,总结出以下题型思维导图:


这本刷题笔记有离线版本下载:
LeetCode CookBook
这个开源项目是@halfrost(中文名一缕殇流化隐半边冰,人称霜神),霜神是前阿里巴巴资深后端工程师,业余时间酷爱写博客,大学参加了3年ACM-ICPC,目前他的博客已经有 300W+ 的浏览量,是 iOS 开发届的大佬级别人物。
整个题解项目全部都是用 Go 语言实现,但算法题最重要的解题思路,每道题都有详细的分析和说明,而不是一上来就写代码,所以即使你没学过Go语言,跟着霜神的题解分析,也能收获良多!
不过话说回来**,**Go语言这么火,你确定不学一下?通过这个项目既能学Go又能学算法。
电子书的序言部分:

这本电子书有在线版本:https://books.halfrost.com/leetcode/
这本书的离线版本方便查看,我之前也分享过,在下面的文章里:
面试刷题刷题抓重点
大部分同学刷题是为了面试,在我们精力有限的情况下,并不一定要把上面说的 14 种模式都完全刷一遍,下面这张图做了比较好的总结,有选择性的刷题,颜色越深面试碰到的概率越高,刷!

下面这张图也做了类似的总结,还给出了大厂考察频率、小公司考察频率,甚至性价比都给你算出来了,还有什么理由不去刷性价比最高的呢!
非常重要的算法模式比如:二分法、二叉树、链表、BFS、DFS、双指针、哈希表、字典树、各种排序,这些必须做到熟练掌握。

总结
今天推荐了这几个算法学习的网站,更重要的是分享了算法刷题的套路和模板。
大家埋头刷题的时候,也要经常抬头看看前人踩出的优秀经验,能让你事半功倍!
希望我的分享能对你算法学习之路有点帮助,有用的话,记得帮 @程序员柠檬 点赞~
我的高赞回答
好了,以上就是今天的分享内容,下面是王婆卖瓜环节~
下面这些是我知乎的高赞回答合集,如果有帮助的话,请点赞&收藏&关注。
一是鼓励我创作分享,二是方便你以后查找!
- 互联网大厂炙手可热的后端开发岗位,如何成体系的学好?收获点赞3000+ 收藏 5100+
2. VS Code 如何编写运行 C/C++ 代码?实战开发经验分享,收获 1000+点赞 2100+ 收藏
3. 你们初刷leetcode时会怀疑自己的智商吗?手把手教会你算法刷题的正确方式,效率翻倍!
3. 算法与数据结构中,AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?4000+ 收藏!
2. C++开发有哪些练基础的开源项目推荐?从入门到进阶,安排明明白白,点赞1400+ 收藏3700+
两个编程学习资源
认真看到这里的,都是真心想学习的同学,两个编程学习资源分享给你。
程序员写出好代码,参考世界一流互联网公司Google的代码规范:
编程学习书单推荐。学习编程最好的方法是看书+实践,尤其是经典编程图书!另外,即使是把书上的代码抄下来运行一遍,也比光看不练强百倍!
希望对你有帮助
更多优质编程干货,点击关注我的专栏:学编程,涨工资
我是 @程序员柠檬 专注分享计算机编程学习和编程资源,如果有帮助,记得帮我点个赞
文章由:知乎作者:编写
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断