继上次发布交流贴 刷题交流|60 天完成刷 1500 道题 以来,又过了22天,才终于完成了这个新的小目标,刷完2000道题。我基本上是按照难度顺序刷的,越往后题目难度越大,哪怕一直保有刷题的热情,速度也不得不降了下来。

因为越往后面刷题越难,所以像早期阶段随意刷的方式效率就比较低了,还是需要有一定的方法论。下面我分享一下自己高效刷题(大佬们请忽略高效二字)的方法,供大家参考。
在入坑初期,我的主要方式是按照知识点刷题。知识点筛选的方式很多,最典型是按照题单来刷,比如最开始我用的是labuladong的算法笔记+题单,然后看过代码随想录。因为是外站,不便分享,有兴趣的扣友可以自行搜索。
力扣大佬们在站内也分享过大量的题单,比如官方推荐的[力扣刷题攻略] Re:从零开始的力扣刷题生活就是最权威的,我刷完了里面的大多数题目,不过这里面有一些比较难我就先放起来了。重点推荐一下灵神的题单,质量高又非常新,我刷完了里面的一部分,目前正在随着进度不断覆盖。
这是灵神最近发布的四类题单:
分享丨【题单】滑动窗口(定长/不定长/多指针)
分享丨【题单】二分算法(二分答案/最小化最大值/最大化最小值/第K小)
分享丨【题单】单调栈(矩形系列/字典序最小/贡献法)
分享丨【题单】网格图(DFS/BFS/综合应用)
这是2022年和2023年灵神从周赛总结的题单:
【灵茶山艾府】2022 年周赛题目总结(上篇)
赛事活动|从周赛中学算法 - 2022 年周赛题目总结(下篇)
赛事活动|从周赛中学算法 - 2023 上半年周赛题目总结
分享丨从周赛中学算法 - 2023 下半年周赛题目总结
这个刷题的思路从我刚入力扣就有了,当时就想着先以刷简单题为主,再中等为主,然后困难。很多大佬比如灵神也提出了按照难度刷题的思路。力扣的简单题在掌握了基本知识点的前提下,刷起来几乎没有什么阻碍。但是中等题就不一样了,有的中等题也比较简单,但有的已经是比较难了,花费很长时间可能也想不出来,更不用说是困难题。
所以大佬们推荐的思路是按照难度分刷题。零神开发了一个问题评分项目,能够统计周赛难度分,此后不少大佬在此基础上开发了一些很好用的插件,如Refined LeetCode。这个插件可以帮我精准找出某一难度范围内的题目,假如我把1650难度分以下的题目刷的差不多了,但是太高难度的题目由于耗时太多(或者说水平还达不到)还不想动,这是我就可以筛选1650-1700区间段的题目来刷,效果如下:

这个插件还有计时和显示周赛预测分等一些很棒的功能,不得不佩服力扣大佬们的想象力和技术水平。
随着刷题量的提升,我逐渐意识到自己刷的题目应当按照一定的逻辑方式组织起来,比如同类题目归类到一起,这样既方便参考,又方便事后总结。力扣用收藏夹可以实现自建题单的功能,把大佬们分享的题单也可以放到自己的题单中。另外,我在刷题过程中遇到新的题目,如果有一点麻烦,不一定马上刷,而是及时放在自建题单中,等积攒到一定程度集中解决。
所以我建立的题单是这样的:

在题库页面用筛选可以快速选择建立的题单:

这样,在有兴趣刷或需要掌握某个知识点的时候,可以打开题单集中解决。
力扣平台做的最棒的一个功能就是题解的分享,当然这离不开大量大佬的加盟。我最常见到的就是灵神、宫水三叶、负雪明烛(还有很多常见ID未一一列出,见谅),当你勉强完成一道题的时候,别着急退出,可以再学习一下优雅的题解,你会发现大佬的思路真的能让你啧啧称奇。
但一定不要上来就看题解,记得上次看过一个扣友分享,他认为最好先自己思考10分钟,实在想不出来再看题解,我很赞同。不过我觉得5分钟没思路,也基本上就可以看题解了。看完题解不要马上coding,可以过几天再写,这样利于长期记忆。
更重要的是,不要抄题解,就算是看懂了,也一定要自己写一遍,自己写的才是自己的东西,才算是掌握,否则遇到了新的题目,仍然不会做。
既然已经完成了刷满2000题的小目标,那就给自己再定几个新的小目标:
- 刷满2500题
- 竞赛段位上Guardian(预计一个月左右)
文末,未来哪个小目标先实现,让我们拭目以待吧!