1. 先认清目标:不同阶段的刷题策略完全不同
先说个我在社区里看了无数次的场景:新人兴冲冲注册了力扣账号,打开题库,从第1题“两数之和”开始,一路往后刷。刷了三十多道,发现前面做过的题全忘了,遇到新题还是没思路,于是开始怀疑自己是不是不适合编程。
这几乎是每个刷题的人都会经历的过程,包括我自己。我最早开始刷力扣的时候也是这个状态,一天刷三道,记笔记、看题解、抄代码,坚持了一个月,回头做第一周刷过的题,竟然连题目都想不起来。后来我才意识到,问题不是我不努力,而是刷题这件事本身有它自己的方法论,盲目堆数量是最低效的策略。
不同阶段的刷题策略是完全不一样的。如果你是在校学生,目标是大厂实习或秋招,你的刷题节奏应该是“广度优先再补深度”,先把高频考点铺开,保证每个主流题型都见过、能写;如果你是已经工作、想跳槽的社招选手,你没有大块时间,需要的是“高频题优先、按公司风格定制”,比如你面的是做搜索业务的公司,字符串处理和动态规划就得重点加强;如果你只是想提升编程思维、锻炼逻辑能力,那根本不需要跟风刷热题100,按自己的兴趣和薄弱环节来就行。
热搜词里那句“进大厂为什么要刷力扣”,很多人的理解是“大厂面试官喜欢考算法”。这个说法对,但没说到根上。面试官考算法不是为了让你证明“你刷过题”,而是要通过算法题考察三件事:第一,你拆解复杂问题的能力,能不能把一个没见过的需求拆成可处理的子问题;第二,你的编码基本功和严谨程度,边界条件、空指针、数据溢出这些细节是不是能一次写对;第三,你的沟通思路的方式,你在动手写代码之前能不能把自己的思路讲清楚。所以力扣题本质上是一个低成本、标准化的能力考察工具。理解到这一层,你就知道刷题不应该追求“我做了多少道”,而应该追求“我能不能把一个陌生问题一步步拆清楚,并写出无bug的代码”。
这一篇我打算把我这两年刷力扣的实际经验、踩过的坑、验证过有效的刷题顺序和复盘方法完整写出来。不会照搬网上那种“三个月从零到offer”的鸡汤路线,而是尽量说点实操层面的东西,包括每天都干什么、遇到不会的题怎么办、错题本怎么记、模拟面试怎么练。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 按知识板块拆题单:比按题号刷高效得多的组织方式
刚入坑的时候,我最喜欢干的事就是打开题库页,按“通过率从高到低”排序,从简单的开始刷。通过率高的题确实简单,但简单题和简单题之间没有任何系统关联。今天刷一道数组题,明天刷一道贪心题,后天刷一道回溯题,大脑里的知识结构永远是散的。
后来我换了个策略:按算法标签和数据结构分类,一个板块一个板块地打。这个转变的效果可以说是立竿见影,同一类题集中刷七八道之后,这类题型的套路就开始在脑子里显形了。比如递归题刷多了,你会发现绝大多数递归都能先写终止条件再写递归体,思考难度立刻降一半;二叉树题刷多了,你会本能地先想“这题要不要遍历顺序”“要不要返回两个值”“要不要带父节点信息”——因为同类题见得多,各种可能性已经内化成了条件反射。
具体怎么拆板块,我按自己验证过的顺序列一下,这个顺序本身也是有讲究的:
第一梯队:线性表与哈希(约2周)
- 数组、链表、栈、队列、哈希表
- 这个梯队是所有后续题型的基础。你不会哈希表,后面很多“空间换时间”的优化思路都没法落地;你不熟链表,二叉树你也没法画清楚引用关系。
第二梯队:字符串与双指针(约1~2周)
- 双指针、滑动窗口、字符串匹配基础
- 这个板块练的是边界控制和指针移动逻辑。滑动窗口题看起来花样多,其实核心就一个:什么时候扩大窗口、什么时候缩小窗口、窗口内维护什么状态。
第三梯队:二叉树与递归(约2~3周)
- 二叉树遍历、BST、树的递归、最近公共祖先等
- 为什么把二叉树放在第三个而不是第一个?因为二叉树是理解递归最好的载体。树的递归结构非常清晰,从根到叶子天然就是一个递归路径。把二叉树的几十道题吃透,你对递归的理解会直接上一个台阶,之后再学回溯、动态规划都顺很多。
第四梯队:排序与二分(约1周)
- 快排、归并、堆排序、各种二分变体
- 排序算法不只是要会写,更要理
