大家好,我是忍者算法的作者,今天想和大家聊聊如何科学地刷题。如果你是一个刚开始刷题的小白,面对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. flask框架开启定时任务简单案例flask_apscheduler

    #所需模块flask_apscheduler #encodig=utf-8 from flask import Flask, request from flask_apscheduler import ...

  2. 我的neovim配置

    init.vim " Vim with all enhancements "文件管理器,我想试一下ranger syntax enable syntax on let maplea ...

  3. k8s之基础篇

    相关概念: kube-apierver: 控制平面组件,负责kubernetes api, 处理接受的请求工作 kube-controller-manager: 控制平面组件, 负责运行控制器进程 k ...

  4. Cygwin:windows下的Linux系统

    Cygwin是啥?Cygwin是一个可原生运行于Windows系统上的POSXI兼容环境. 是的,我又开新专辑了<零基础swoole学习笔记>.不是我太贪心,而是最近半年和小伙伴一直在用s ...

  5. k8s之常见问题汇总

    1.服务器中的k8s已经被移除,但是磁盘依然有占用, 于是将其卸载并删除操作 [root@k8s-node2 k8s_node]# rm -rf /var/lib/kubelet rm: cannot ...

  6. Sealos AI Proxy 发布!一个平台调用所有大模型,再也不用到处找 API 了

    你是一位开发者,你需要调用各类 AI 模型,每次调用模型,都要在不同的平台间反复横跳,你大概会遇到以下问题: 获取 API Key 流程繁琐:需访问多个厂商的官网,查阅各自的使用文档,并按照规定的步骤 ...

  7. 【Amadeus原创】wordpress 从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。此响应不是合法的JSON响应。解决方法。

    两种报错方式: 1.此响应不是合法的JSON响应. 2.从服务器收到预料之外的响应.此文件可能已被成功上传.请检查媒体库或刷新本页. 情况:媒体服务器上传小文件没问题,大一点的文件报这个错误. 原因: ...

  8. [双体系练习]Java基础练习题1

    因为练习是word,本文我只是写了里面的部分内容,如果想查阅完整内容或者获取word以及PDF,请 关注微信公众号 乖乖狼科技 发送口令 akcd T1 静态代码块中不能? · [D ] A. 初始化 ...

  9. Qt/C++音视频开发63-设置视频旋转角度/支持0-90-180-270度旋转/自定义旋转角度

    一.前言 设置旋转角度,相对来说是一个比较小众的需求,如果视频本身带了旋转角度,则解码播放的时候本身就会旋转到对应的角度显示,比如手机上拍摄的视频一般是旋转了90度的,如果该视频文件放到电脑上打开,一 ...

  10. Qt音视频开发29-ffmpeg中x264/x265编码库支持

    一.前言 有了解码当然对应又有编码,编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码.用预先规定的方法将文字.数字或其它对象编成数码,或将信息.数据转换成规定的电脉冲 ...