我刷了1200题,却在一道简单题上挂了
我大概是从2021年初开始正经刷力扣的。第一年断断续续刷了400多题,大部分是简单和中等,困难题基本靠看题解。当时觉得自己还行,结果2022年春招面试某大厂,一面手撕“螺旋矩阵 II”(第59题),我写了20分钟没跑通,面试官全程沉默。后来复盘,发现自己刷题的方式有问题:我习惯按“标签”刷,比如今天刷“数组”,明天刷“动态规划”,但每个标签刷完就忘,完全没有形成条件反射。到2023年,我刷到了1200题左右,周赛 rating 最高到过 1850,虽然不算高,但至少能稳定三题。这篇文章不是鸡汤,就是把我踩过的坑和后来调整的方法写下来。
按标签刷 vs 按公司题库刷,我选了第三条路
很多人推荐按公司题库刷,尤其是面试前。力扣会员有个“企业题库”功能,年费我记得是1599元(2023年价格,现在好像没变)。我买过一年,说实话,体验很一般。首先,企业题库的更新严重滞后,比如某家公司的标签下,最新题目可能还是两年前的。其次,不同团队、不同面试官出的题差异极大,我面某厂时遇到一道“设计限流器”的题,企业题库里根本没有。反而是我按标签刷的时候,在“设计”标签下见过类似的。所以我的观点是:企业题库可以作为参考,但不要迷信。按标签刷的核心问题是容易“偏科”——比如你刷“双指针”标签,可能连续刷20道都是同类型,肌肉记忆是有了,但遇到综合题就懵。后来我改成“随机刷 + 按难度分层”,效果反而更好。具体步骤:我给自己定了个规则,每天先刷一道“每日一题”,不管难易,必须做。然后从“未做”列表里随机抽2道中等题,限时25分钟一道,做不出来就看题解,但必须手写一遍。周末打周赛,不管多忙都打。这样坚持了6个月,周赛从1500左右涨到了1800+。数据上,我统计过,按标签刷的时候,我平均每道题要花35分钟,因为同类题想太久;随机刷之后,平均22分钟。当然,这跟熟练度也有关。
周赛 rating 比刷题数更有说服力
力扣的个人主页上,刷题数是最显眼的数字,但我现在觉得这个数字最没用。我见过刷了2000题但周赛只能做两题的,也见过只刷了400题但 rating 2100 的。原因很简单:刷题数可以靠“简单题”堆出来,而周赛 rating 是实时对抗,掺不了水。力扣的竞赛 rating 计算类似 Elo,前几场波动大,后面趋于稳定。如果你想检验自己的水平,别看刷题数,看周赛 rating 和“竞赛积分”。另外,力扣的“每日一题”连续打卡天数也是个有意思的指标,我见过连续打卡1000天的,但这种毅力用在别的地方可能更值。我的建议是:如果你目标是面试,刷300-400道高频题足够,但必须保证每道题都能在15分钟内写出无 bug 的代码。如果你目标是提升算法能力,那周赛是更好的训练场。
题解区才是真正的宝藏,我花了半年才明白
最后说一个很多人忽略的点:力扣的题解区。我早期刷题只看官方题解,觉得其他人写的不够“权威”。后来发现,官方题解往往只给最优解,而评论区里有人会贴出“暴力解法”、“递归转迭代”、“空间优化”等不同思路。比如第146题 LRU 缓存,官方题解用了哈希表+双向链表,但评论区有人用 Java 的 LinkedHashMap 5行搞定,虽然面试时不能这么写,但理解本质很有帮助。我现在刷完一道题,会花10分钟看前3个高赞题解,比较他们的时间复杂度和代码风格。这个习惯让我在面试时能快速说出多种解法,面试官明显更满意。
总之,力扣只是个工具,别被数字绑架。刷题不是目的,通过刷题建立解题的思维框架才是。如果你也在刷题,不妨试试把刷题数藏起来,盯着周赛 rating 打三个月,看看效果。