大家好,我是忍者算法的作者,今天想和大家聊聊如何科学地刷题。如果你是一个刚开始刷题的小白,面对LeetCode上密密麻麻的题目感到无从下手,或者刷了一段时间却发现自己进步缓慢,那么这篇文章就是为你准备的。

我会分享一套经过实践验证的刷题方法论,帮助你在4个月内从0基础刷到500题,并且形成长期记忆,具备高效解决各类算法问题的能力。无论你是为了面试准备,还是单纯想提升算法能力,这篇文章都会给你带来实实在在的帮助。

1. 刷题的核心:匀速前进,不求快但求稳

很多同学在刚开始刷题时,往往会陷入“题海战术”的误区,认为刷得越多越好。我曾经也是这样,一天刷10道甚至20道题,追求数量上的成就感。然而,没过多久就发现,虽然题量上去了,但遇到新题还是毫无思路,甚至连之前做过的题也忘得一干二净。

问题出在哪里?
刷题并不是简单的“量变引起质变”,而是需要深度理解反复巩固。如果你只是机械地刷题,没有及时总结和复习,那么刷得再多也只是短期记忆,很快就会遗忘。

我的建议:匀速前进,每天4-5题

  • 全职刷题:每天4-5题,早上2题,下午2题,晚上复习。

  • 兼职刷题:每天2-3题,保持节奏,避免过度透支精力。

为什么是4-5题?
这个数量既能保证你每天有足够的练习量,又能让你有时间对每道题进行深度思考和总结。刷题不是马拉松,而是长跑,保持匀速前进才能走得更远。


2. 归纳总结:按类训练,形成解题框架

刷题的核心并不是单纯地做题,而是归纳总结。每类算法题都有其通用的解题思路和框架,掌握这些框架后,你会发现很多题目都是“换汤不换药”。

如何归纳总结?

  1. 按类刷题:一段时间内集中刷同一类型的题目。比如,你可以花一周时间专门刷“动态规划”或“二分查找”相关的题目。

  2. 总结套路:在刷完一定数量的同类题目后,停下来总结这类题的通用解法。比如,滑动窗口题的常见套路是什么?回溯题的模板有哪些?

  3. 形成框架:将总结出的套路整理成自己的解题框架,下次遇到同类题目时,直接套用框架即可。

举个例子,我在刷“滑动窗口”题时,总结了以下框架:

  1. 定义左右指针,初始化窗口。

  2. 移动右指针,扩大窗口。

  3. 当窗口满足条件时,记录结果并尝试缩小窗口(移动左指针)。

  4. 重复上述步骤,直到遍历完整个数组。

通过这样的总结,我不仅能够快速解决滑动窗口题,还能举一反三,解决类似的变种题。


3. 高效复习:利用记忆规律,形成长期记忆

刷题的过程中,复习比刷新题更重要。人的记忆是有规律的,如果不及时复习,学到的知识很快就会遗忘。

如何高效复习?

  1. 艾宾浩斯遗忘曲线:根据记忆规律,合理安排复习时间。我的复习节奏是:2小时后、12小时后、2天后、7天后、15天后、1个月后、3个月后。

  2. 复习旧题:每天刷新题的同时,花一定时间复习之前做过的题目。复习时,重点关注自己当时不会做的题或容易出错的题。

  3. 记录错题:建立一个错题本,记录每道题的解题思路和易错点。定期回顾错题,避免重复犯错。

通过这样的复习方法,你会发现自己的记忆越来越牢固,遇到做过的题目时,能够快速反应并写出代码。


4. 心态调整:拥抱孤独,过滤外界杂音

刷题是一个长期的过程,难免会遇到瓶颈和挫折。很多同学在刷题时会感到孤独,甚至焦虑,尤其是看到别人刷得比自己快、比自己多时,心态容易失衡。

如何调整心态?

  1. 拥抱孤独:刷题是一个需要独立思考的过程,不要过度依赖外界的反馈。与其加入各种刷题群,不如静下心来,专注于自己的节奏。

  2. 过滤杂音:减少社交媒体的使用,避免被外界的焦虑情绪影响。刷题的路上,你只需要和自己比较,而不是别人。

  3. 保持平稳心态:不要因为一时的进步而沾沾自喜,也不要因为暂时的挫折而灰心丧气。刷题是一场持久战,心态平稳才能走得更远。


5. 刷题顺序推荐:从易到难,循序渐进

对于刚开始刷题的小白,我建议按照以下顺序刷题:

  1. 基础数据结构:数组、链表、栈、队列、哈希表、二叉树等。

  2. 基础算法:二分查找、双指针、滑动窗口、递归、回溯等。

  3. 进阶算法:动态规划、贪心算法、图论、并查集等。

  4. 高频面试题:LeetCode上的热门题目,尤其是大厂常考的题目。

如果你不知道从哪里开始,可以参考我整理的刷题清单,里面包含了从易到难的题目分类和详细题解:点击查看刷题清单


最后:刷题是一场修行,坚持就是胜利

刷题并不是一蹴而就的事情,它需要你付出时间和精力,更需要你保持耐心和毅力。希望通过这篇文章,你能找到适合自己的刷题方法,少走弯路,早日攻克算法面试。

如果你觉得这篇文章对你有帮助,欢迎关注我的公众号【忍者算法】,我会定期分享更多算法题解和刷题技巧。同时,你也可以在公众号后台回复“刷题清单”,获取我整理的详细刷题顺序和高频面试题解析。

刷题的路上,你并不孤单。 让我们一起努力,成为更好的自己!


关注我,获取更多算法干货!
微信公众号:忍者算法
刷题清单:点击查看


作者:忍者程序员
公众号:忍者算法

LeetCode刷题小白必看!如何科学地刷题,从0到1建立你的算法体系?的更多相关文章

  1. 小白必看Python视频基础教程

    Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...

  2. 2019最新WEB前端开发小白必看的学习路线(附学习视频教程)

    2019最新WEB前端开发小白必看的学习路线(附学习视频教程).web前端自学之路:史上最全web学习路线,HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次 ...

  3. 全网最详细的新手入门Mysql命令和基础,小白必看!

    MySQL简介 什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是 ...

  4. 353 stars Java项目!Java小白必看!austin介绍 【第一话】

    有好几个群友问我为什么最近更新变慢了.工作忙是一方面,另一方面是我更新文章的动力确实下降了.近大半年一直在更新的<对线面试官>系列,到现在已经40篇了. 说实话,当时我更新该系列有很大一部 ...

  5. Web前端开发的四个阶段(小白必看)

    第一阶段:HTML的学习 超文本标记语言(HyperText Mark-up Language 简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏览器 ...

  6. Python自学从入门到就业之函数基础(小白必看)

    函数介绍 <1>什么是函数 请看如下代码: print(" _ooOoo_ ") print(" o8888888o ") print(" ...

  7. 8个超好用的Python内置函数,提升效率必备(小白必看)

    python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率. 这次来梳理下8个好用的python内置函数. 1.set() 当需要对一个列表进行去重操作的 ...

  8. 小白必看,Python 各种下划线都是啥意思_、_xx、xx_、__xx、__xx__、_classname_

    我们在定义一些变量或者方法的时候,常常会用到下划线,在 Python 中,下划线可是很有用处的哟,比如变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(__xx),有些是在名称的结尾添加 ...

  9. 零基础小白必看篇:从0到1构建Python Web框架

    造轮子是最好的一种学习方式,本文尝试从0开始造个Python Web框架的轮子,我称它为ToyWebF. 本文操作环境为:MacOS,文中涉及的命令,请根据自己的系统进行替换. ToyWebF的简单特 ...

  10. 2.4 小白必看:零基础安装Linux系统(超级详细)

    我们以新发布的 CentOS 8.1 为例,学习如何安装Linux系统. 准备工作: 1. 一台可以访问互联网的电脑 2. VMware Workstation安装包 3. CentOS8.1镜像文件 ...

随机推荐

  1. Docker Registry之删除镜像、垃圾回收

    Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据.在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据.本文对这一特性 ...

  2. Jenkins之插件汇总

    Nodejs: 构建前端项目或Node项目 Build Name and Description Setter Publish over SSH: 远程执行shell命令 Blue Ocean   友 ...

  3. Python之解析配置文件

    [.env] 1) 使用python-dotenv 安装: pip install python-dotenv 示例配置文件: ADMIN_HOST = https://uat-rm-gwaaa.cn ...

  4. uniapp h5 和 小程序互相传值

    小程序端 <template> <div> <web-view :webview-styles="webviewStyles" :src=" ...

  5. 如何实现LLM的通用function-calling能力?

    众所周知,LLM的函数function-calling能力很强悍,解决了大模型与实际业务系统的交互问题.其本质就是函数调用. 从openai官网摘图: 简而言之: LLM起到决策的作用,告知业务系统应 ...

  6. uniapp 坑 - sslVerify不支撑离线打包

    uniapp 打包为Android的apk时,由于适用https和自签证书,离线打包不支撑sslVerify,导致出现Trust anchor for certification path not f ...

  7. 二进制安装Kubernetes(k8s)v1.32.0

    二进制安装Kubernetes(k8s)v1.32.0 介绍 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k ...

  8. R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例

    之前给大家写过好几篇很详细的临床预测模型的原理解析,本文接着之前的文章,继续写做法,首先依然是找到一篇参照论文,今天我们的示例文章是一篇来自美国心脏学会杂志的文章: Zhang X, Yuan K, ...

  9. 中电金信:亚洲TOP1 霸榜15年

    近日,国际权威语言服务研究机构CSA Research公布了<2022年全球语言服务提供商100强>和<亚太地区TOP 30语言服务商>排名报告. 中电金信凭借卓越的品质管控. ...

  10. 在 d2js 使用多种数据源如spring数据源

    不少人误以为 d2js 只能通过 database.js 指定一个数据库,是一个单数据库方案.实际上 d2js 也可以使用多个数据库. 在 WEB-INF/jslib/d2js/base.js 的末尾 ...