在互联网面试时,手撕算法题是绕不过去的坎,算法题能否做出来直接决定了你这场面试是否通过,准备算法题最有效的手段就是刷题了。可是截止到2020年12月,LeetCode上算法题已经有1888道了,全部刷完是不现实的,高效科学地刷题才是正确的选择。
前言
我本人开始准备算法题以来,集中训练刷题大概用了2个月的时间,在LeetCode上刷题400道左右(包括剑指offer)。从一个算法菜鸡,到现在算是对常见的数据结构和算法有一些自己的理解,这其中有一些刷题的套路和经验分享给大家。
首先说明,我不是算法高手,算是笨鸟先飞,勤能补拙型选手,我按照这套刷题方法几乎拿到了国内所有互联网大厂的offer,我相信大家也可以按照我的刷题方法有所收获。
接下来我会从刷题前的准备,刷题顺序,正确的做题方法这三个方面来分享刷题的经验。
特别说明:本文主要是以找工作为目的的刷题,一切经验都是从找工作面试的角度出发。
一、刷题前的准备
对于一个新手来说,在刷LeetCode之前是需要一些基本功的,也就是要对最基本的数据结构和算法有所了解。这里我不建议一上来就硬看《算法导论》这本书,因为这本书太难了,反正我是看了几页就看不下去了…
正确的做法应该是:书+视频
对于书的推荐,我强烈推荐《算法图解》这本书,这是我见过对新手最友好的算法书,看这本书感觉像是在看小说,而且全是用图画的形式给你讲解算法思路,可以说是算法入门必备书籍。
对于教学视频,我个人建议是看一套完整的数据结构和算法的教学视频,就是从数组,链表一直给你讲到二叉树,图结构,再加上一些基本的排序算法。至于视频的推荐,可以去B站看小甲鱼老师的视频,名字就叫数据结构和算法。
现在小甲鱼老师的算法视频已经有215.5万的播放量了,太强了有木有。
二、刷题顺序
有了算法基础之后,然后就是真正的刷题实战部分了。
对于刷题顺序,我在上篇文章《干货 | 互联网大厂offer收割经验》也说过了,科学的刷题顺序应该按照标签分类来刷,可能有小伙伴会问现在每一个标签都有很多题目,到底应该怎么选呢?
这里推荐一个朋友推荐给我的神级GitHub链接,这里面精选大概 200 道左右的题目,去除了某些繁杂但是没有多少算法思想的题目,同时保留了面试中经常被问到的经典题目。这个仓库总共分成两部分:算法思想和数据结构,对找工作面试来说这是非常合理的。
我面试中遇到算法题目大概有80%都能在这个GitHub里面找到原题。这个GitHub简直就是刷题神器,找工作面试必备。甚至点击对应的题目名字,可以直接跳转到LeetCode对应的题目直接做题,非常方便。
比如我们点开贪心算法的目录,可以看到第455题的Assign Cookies题目,点击LeetCode就可以直接跳转到做题界面,对于刷题党来说,不用再去打开LeetCode去搜索题目,省时省力。大家可以在公众号回复:【刷题】,即可获取GitHub的刷题链接。
三、正确的做题方法
刷题的时候有一个误区需要给大家指出来:就是不要抵触看答案和解析。因为我在刚开始刷题的时候,连LeetCode简单难度的题目都做不出来…而且经常一道简单的题目要卡在那想一天…当时就觉得自己太失败了。
但其实你去看题目后面的讨论,大部分人在刚开始刷题的时候都是一道题都不会,后面题目刷的多了才慢慢熟能生巧。
所以我的建议是:如果一道题目,想了5分钟还没想出来,那就放下你的坚持,直接去后面看答案吧。因为5分钟都没想出来说明你根本不会这道题。总之答应我,去看答案,看完答案你就明白了。
那么看答案是不是就是直接背住呢,其实不是的,题目千变万化,背是背不完的。看完答案之后,你需要把答案的解题思路理解透彻。然后把答案关上,自己按照答案的思路重新敲一遍代码,切记要自己亲自动手敲代码,然后去LeetCode上提交通过,这样才算是真正掌握了。
有小伙伴问LeetCode后面的答案有时候不是很好怎么办。这里我推荐一个大神的公众号,也是我当时刷题的时候经常看的一个公众号:labuladong。
东哥的算法讲解很是精辟,会从算法的框架给你讲解题目,深入浅出的带你学习算法,还能让你举一反三,真是良心公众号,大家也可以去关注一波(这波绝不是广告!!!)
最后就是刷题时间的安排,我个人觉得在面试前2个月左右开始刷题比较好,因为刚刷完题就去面试,这时候效果最好,很多算法还很熟悉,可以信手拈来,我自己就是这样做的,效果很好。下图是我今年刷题的情况,总共提交了1000多次。
我基本都是集中在5月,6月这两个月,没日没夜地刷题。到了7月份真正开始面试的时候就开始每天刷2-3道题保持手感就可以了。
写在最后
其实刷题贵在坚持,我见过很多人刷了几十道题,要么因为太难,要么因为太累就放弃了。其实按照正确的刷题顺序和刷题方法,刷完之后多总结套路,等你刷到后面的时候就会越来越容易,一天刷10几道题也是很正常的,这时你的信心也会越来越充足。
以上就是我对LeetCode刷题的感悟,希望对大家有所帮助,如果觉得写得不错,可以多多转发点赞,帮助更多的朋友。祝努力刷题的你能收获满意的offer。
(你好,我是小哇同学,是一名算法工程师,学历背景为双985,曾获国家奖学金。在2020年秋招中收获了一些互联网大厂的offer,包括:BAT,字节跳动,拼多多等,多数为ssp。我曾参加过一些知名公司举办的全国人工智能算法大赛,多次取得top1%的成绩。我会在公众号:【小哇同学】,分享计算机领域学习干货,互联网内推名额,大学、读研规划)