刷完 LeetCode 是什么水平?按照怎样的顺序来刷题比较好?

我在还没有LeetCode的时候就开始刷题了,主要是竞赛方向,刷过的题超过2000道。曾就职FB并担任面试官,国外offer拿过10多个,国内offer 20+。总结了很多刷题的方法套路、以及高频题型的算法解题模板,可以帮你事半功倍。

2015年leetcode题量是233题,现在已经到1600+,LintCode更是超过1800道。所以当年的“刷完LeetCode”跟现在完全是两个概念。

从我讲《九章算法班》这几年的观察和经验来看,针对面试的刷题量是逐渐递增的

2013-2014年,面试问的都是二分法,String这些最简单的,看看《剑指offer》就完事了。刷题?不存在的。
2015年-2016年,常考的是二叉树、链表、双指针,一般人刷题量在100多道不到200的样子,前面也说了,那时候题目也就这么多。
2017年,大家都刷题,面试官也不傻,就出各种变形题。万恶的动态规划开始出现在面试中,这时候刷题量至少要200。
2018年,DFS越来越难,DP花样越来越多,刷题量250-300。
2019年-现在,中美贸易战、股市暴跌、新冠疫情,北美那边就不用说了,国内大厂和独角兽算法面试各种加大力度,一般刷题量300起步。

不过这不代表你刷题到300,就能拿大厂offer了。我见过有些刷500多题的人还是挂面,也见过很多刷题一两百道就进谷歌的。

如果目的只是求职面试的话,一定要优先搞定那些面试中常见的算法和数据结构。方法总结起来仅一条:根据面试出现的频率进行分类刷题

下面是我总结的面试频率一览表:颜色越红,表示面试中碰到的概率越高;灰色的基本不考,或者出现概率很低。

刷完 LeetCode 是什么水平?按照怎样的顺序来刷题比较好?
▲版权归《九章算法班》所有

有人可能会说,KMP有用到过呀,Manachers算法难道不是求最长回文子串的最优解吗?

你说得都对。不过在面试中,Manachers算法绝对不是面试官想看到的解法。为什么?

因为面试官可能自己也不会。

再说KMP算法,还有一个比这个更简单的算法,叫Rabin-Karp。如果是追求最优解,我为什么不去背个答案?

所以刷题之前,首先要明确目的。

刷300道题要拿到大厂的前提是有正确的方法和节奏。这是我总结的面试常见知识点的考察频率和对应的刷题量。

刷完 LeetCode 是什么水平?按照怎样的顺序来刷题比较好?

另外,再多说一句。单就算法面试来说,除了会做一道题外,如何与面试官沟通也很重要

因为面试官大多是你未来的直属领导或者同事,算法面试更像是合作共同解决问题的过程,所以他们更希望招一个可以共事的伙伴,而不是一个做题机器。


在我主讲的《九章算法班》中,除了会讲如何刷题外,还会谈谈面试中正确沟通的技巧,培养coding style和bug free的能力。按照我的方法刷题,1个月就能搞定算法面试。

最后,我还总结了最新的算法面试精选100题,会在九章算法班首场直播试听中免费分享给大家,有兴趣的同学记得来呀。