刷题是提升能力(无论是编程、考试还是其他技能)的核心方法,但“有效刷题”和“无效刷题”的差别巨大,无效刷题就是“题海战术”,做得再多也只是重复劳动;而有效刷题则是一个“输入-处理-输出-复盘”的闭环系统。
下面我将从心态、策略、方法、工具四个维度,为你提供一套系统性的刷题技巧。

心态篇:从“刷题机器”到“解题高手”
心态决定了你的刷题能走多远。
-
拥抱“成长型思维” (Growth Mindset)
- 错误是宝藏:不要害怕犯错,每做错一道题,都意味着你发现了一个知识盲区或思维误区,这道题的价值远高于你做对的十道简单题。
- 过程大于结果:不要只盯着“AC”(Accepted),把重点放在“我是如何思考的?”“卡在哪里了?”“学到了什么新方法?”上。
-
耐心与毅力
- 接受“卡住”:遇到难题卡住半小时甚至更久是常态,这恰恰是能力提升的关键时刻,不要轻易放弃,但也要懂得适时寻求帮助。
- 长期主义:刷题不是一蹴而就的,把它看作一个持续的投资,每天进步一点点,长期回报会非常惊人。
-
建立正反馈循环
(图片来源网络,侵删)- 从简单开始:初期选择难度适中、能让你快速获得成就感的题目,建立信心。
- 可视化进步:使用工具记录你的刷题数量、掌握的知识点等,看到自己的进步曲线,会更有动力。
策略篇:精准打击,而非盲目轰炸
好的策略能让你事半功倍。
-
明确目标,分清主次
- 求职导向(如 LeetCode):根据目标公司的面试高频考点来刷题,数组、字符串、链表、二叉树、动态规划、回溯等是必考项,可以先刷热门公司的“Top 100 Liked Questions”。
- 考试导向(如考研、考证):研究历年真题和考纲,明确高频考点和重点章节,集中火力攻克。
- 技能提升导向:如果你想提升某个特定能力(如算法思维),就集中刷该领域的题目。
-
由浅入深,循序渐进
- 先易后难:不要一上来就挑战“Hard”题,按照
Easy -> Medium -> Hard的顺序,确保基础牢固。 - 按专题刷:将题目按数据结构(如链表专题)、算法思想(如动态规划专题)分类刷,这能帮你系统性地掌握一类问题的通用解法,形成“肌肉记忆”。
- 先易后难:不要一上来就挑战“Hard”题,按照
-
质量远大于数量
(图片来源网络,侵删)- 一道题吃透,胜过十道题浅尝辄止,刷100道题,每道题只看懂答案,不如刷10道题,每道题都能独立写出、讲透、并能举一反三。
方法篇:建立你的“解题SOP”
这是刷题技巧的核心,一套可复制的流程。
解题四步法
第一步:审题 & 理解 (5-10分钟)
- 输入/输出:明确函数的输入是什么,输出是什么。
- 边界条件:考虑所有可能的边界情况,如空值、负数、0、最大/最小值等。
- 示例分析:手动走一遍给定的示例,确保自己完全理解题意。
- 自我提问:这个问题的本质是什么?它想考察什么?
第二步:思考 & 设计 (15-30分钟)
- 暴力解法:先思考最直观、最容易想到的解法(即使效率很低),这能保证你至少能解决问题,并为你提供优化的起点。
- 寻找优化:思考暴力解法的瓶颈在哪里(如时间复杂度高、空间复杂度高),然后尝试用更优的数据结构或算法来优化。
- 数据结构:数组/链表/哈希表/栈/队列/树/图...
- 算法思想:排序、双指针、滑动窗口、递归/分治、贪心、动态规划、回溯...
- 伪代码:在写代码前,先用伪代码或流程图把核心逻辑和步骤写下来,理清思路。
第三步:编码 & 实现 (15-30分钟)
- 清晰代码:注意代码的规范性和可读性,适当添加注释。
- 处理细节:注意循环的终止条件、递归的基线条件、变量的初始化等细节。
- 测试用例:除了题目给的示例,自己再构思几个测试用例,包括边界情况,来验证代码的正确性。
第四步:复盘 & (10-20分钟) - 这是最重要的一步!
- 对比分析:写完后,去看最优解或官方解法,思考:
- 我的解法和最优解的差距在哪里?
- 为什么最优解更好?(时间/空间复杂度分析)
- 我为什么没想到最优解?
- 归纳总结:将这道题的“知识点”、“解题套路”、“易错点”记录到你的笔记中。
- 知识点:如“哈希表在查找上的时间复杂度是O(1)”。
- 解题套路:如“求子数组和/子序列问题,可以考虑前缀和或滑动窗口”。
- 易错点:如“链表操作时,一定要记得处理头节点为空的情况”。
- 举一反三:寻找与这道题类似的题目,尝试用学到的方法去解决,巩固理解。
高效刷题流程
- 限时训练:模拟面试场景,给自己规定时间(如30-45分钟)完成一道题,锻炼快速思考和编码能力。
- 一题多解:对于经典题目,尝试用多种方法解决(如暴力、优化、最优解),深入理解不同方法的优劣。
- 定期回顾:每周或每两周回顾一下之前做过的错题和难题,防止遗忘,可以用Anki、Notion等工具制作错题本。
工具篇:善用工具,事半功倍
-
在线评测平台
- LeetCode:全球最大的程序员刷题社区,题目质量高,社区讨论活跃,是求职面试的首选。
- 牛客网:国内知名平台,有大量公司真题和专项练习,非常适合国内求职。
- HackerRank / Codewars:更偏向于趣味性和挑战性,适合在准备之余保持手感。
-
笔记工具
- Notion / Obsidian / OneNote:建立你的“刷题知识库”,记录每道题的解法、思路、复杂度分析、相关知识点、总结,形成你自己的知识网络。
- GitHub:将你的代码整理成一个“刷题仓库”,用清晰的目录结构(如按数据结构分类)管理你的代码,方便回顾和展示。
-
辅助工具
- 白板/草稿纸:强烈推荐!在纸上画图、写伪代码,能极大地帮助你理清思路,避免在代码里“绕圈子”。
- 复杂度分析计算器:帮助你快速计算时间/空间复杂度。
- AI 助手(如 ChatGPT, Copilot):注意:AI是辅助,不是替代。
- 正确用法:用它来解释你不理解的代码、帮你检查边界条件、或者在你思路卡住时提供一些建议性思路。
- 错误用法:直接让它给你完整答案,这样你就失去了锻炼思考能力的机会。
有效的刷题 = 明确的目标 + 科学的策略 + 闭环的方法 + 合适的工具。
刷题的本质不是“刷”,而是“通过解题来学习和构建自己的知识体系”,当你能把一道题的解法、思路、变体、相关知识点都串联起来,形成一张知识网络时,你就真正从“刷题”升级为“解题高手”了。
祝你刷题愉快,早日成功!
