大家好,我是负雪明烛。今天跟大家聊一聊「LeetCode应该怎么刷?」这个话题。

我是大二的时候开始接触 LeetCode 的,那时候 LeetCode 只有 400 题,我本来打算每天做 1 个题,但是由于当时觉得题目太难没坚持下去。在大四考研后和研一研二的两年左右的时间,我刷了 800 多道题(现在已经900多),并且大多数题目做了 2~3 遍。那么我是怎么做到的呢?

一、入门篇

1. 刷题姿势

刚开刷 LeetCode 时遇到二叉树翻转,想了一天也没明白,当时无比痛苦。因为我的方法不对,我总想着在脑子里面想明白再写,在白纸上不停地模拟二叉树树翻转的每一步,还想着用本地 IDE 写个二叉树结构进行Debug,现在看来都是走了弯路。

大部分新手应该是只学过课本上的一些数据结构和算法的知识,还没有实际刷题经验,因此非常痛苦。

对于新人而言,不应该自己死抠一个题目,如果想了一会没有任何思路,就应该果断看别人怎么写的。在理解了别人的做法之后,再凭理解和记忆在 LeetCode 的代码框里敲一遍。

学习 = 学 + 习。知识是学出来的,不是在自己脑子里蹦出来的;学过之后,还要自己动手练习。新手要勇敢地、经常地学习别人的解法和答案,然后凭理解敲代码练习。只要度过刷题初期的痛苦,后面就会越刷越快。

2. 基础知识

需要掌握常用的数据结构和算法的思想和适用场景。

学习基础知识,我推荐 《算法(第4版)》。这个书不用全部细看,可以只看重点,比如前面的 Java 知识不用看,数学推导部分可以不用看。

再推荐一本侯捷的 《STL源码剖析》,这本书对理解C++ STL有重大帮助,看了之后绝对会对数据结构和算法有更深的理解,我看完这本书之后感觉相见恨晚啊。

3. 刷题顺序

合理的刷题顺序能降低难度,帮助我们在有限的时间里获得最快的成长。

LeetCode 现在将近 2000 道题,基本没有人能够全部刷完,而且对于参加面试者来说也没有必要刷特别多的题。许多人在面试前刷了 200 道题,基本够了;准备更充分的人,大概会刷 400 道题;能刷 600 道题目以上的,基本上国内公司的 Offer 都能收获到一大堆。

我推荐的刷题顺序的规则是:

  • 按分类刷;每个分类从 Easy 到 Medium 顺序刷;
  • 优先刷 树、链表、二分查找、DFS、BFS 等面试常考类型;
  • 优先刷题号靠前的题目;
  • 优先刷点赞较多的题目;

如果基本上能做到 Easy 题 100% 能做对,Medium 题经过思考或与面试官交流后能做对,基本就能拿到 Offer。在实际面试过程中,很少出 Hard 题,视能力刷。

4. 跟别人学习

向别人学习是非常必要的。

1)看别人的题解

主要看别人在解决这个题目的思路是什么。无论这个题你会不会,都要看下别人的解法,或许有新收获。

推荐的博客作者有:

  • 负雪明烛:5 年在 CSDN 上更新了 800多道题解,收获 160万 阅读。在中文力扣日更题解。
  • 李威威:中文力扣的大 V,对力扣题目掌握很全面,写得题解非常详细,对题目举一反三。
  • 花花酱:基本每个题都有博客和视频,强烈推荐看他的视频。
  • Grandyang:在博客园更新了几乎所有力扣题目,收获了 1200万 阅读。

最近我在刷中文版的力扣,题解区的答案质量非常高。比较推荐的博主有:力扣官方题解,负雪明烛,李威威,zerotrac,Krahets

我恬不知耻地推荐一下自己(负雪明烛)的题解,我最近已经连续在中文力扣日更「每日一题」题解 20 天。最近利用动图帮助大家理清做题思路,点赞和阅读数都比较高。

除了题解区以外,如果想看博客上面的题解,可以用搜索引擎搜题目和博主名。想看负雪明烛的「two sum」题解,那么搜索方式就是在关键词之后加上「fuxuemingzhu」:

2)看别人的总结

这部分包括算法讲解、套路整理、刷题模板等。

「算法题 = 思路 + 模板」,思路需要通过看别人的解答以及讲解获得,模板就是做题的套路,既可以自己总结,也可以看别人总结好的。

比如负雪明烛的【LeetCode】代码模板,刷题必会。

也比如说 AlgoWiki :

当然推荐每个人在做题的过程中都整理一份自己的总结,用自己的方式总结好知识点和模板。

5. 做好笔记

写作过程能更好地帮助我们理清思路,也能帮助我们再做此题时快速想起以前的做法,还能见证我们自己的成长。

在五六年前我刚开始刷题时,就把每个做过的题目记录在CSDN上,现在我的博客浏览量已经将近 161万 了。

任何题,无论难度,我都记录题目、想法、代码。虽然经常写博客的时间比写题的时间还多,但是把自己的想法讲解一遍才是真的懂了,更方便了自己之后看、以及大家交流。经常看到自己几年前写的愚蠢代码,然后感叹自己确实有进步了。

在 B站 有个小姐姐讲了小白如何上手LeetCode,也演示了如何用 iPad 做笔记,值得一看。

程序媛分享 | LeetCode小白如何上手刷题?iPad学习方法 | 刷题清单 | 新手指南 | 刷题找工作 | IT类

6. 交流和监督

刷题最大的障碍是自己。特别是新手,很可能由于刚接触 LeetCode 感觉太难就没有毅力坚持下去,导致半途而废。而且,刷题更重要的是坚持,做题的感觉都需要手感进行保持的。

所以,如果能有个组织交流和监督就好了。

我组织了「每日一题交流群」的活动,并且做了个网站 https://ojeveryday.com 来监督大家打卡。在网站上提交力扣个人主页就能进群,群里的规则是每天同步力扣的每日一题,然后大家交流做法。群里还会组织模拟面试、周末直播讲题等活动。由于进群前需要提交自己的 LeetCode 个人主页,并且群主管理严格,所以群里没有任何广告。刷题群已经持续将近一年,欢迎大家加入。

事实证明这种大家一起做同一道题目,并且一起交流讨论的氛围非常好。

二、提高篇

如果你已经过了小白的阶段,那么应该做些提高项目。

1. 周赛

所谓周赛,就是每周日上午,LeetCode 组织的一场比赛,总共 4 道题,一般是 Easy 一道,Medium 两道,Hard 一道。中英文网站同时开始,题目相同。每隔一个周六晚上有双周赛,题目和周赛类似。往届竞赛也可以点击参加做练习模拟。

做周赛的目的是检验我们的学习成果,毕竟这些题目都是新的,就像考试一样。

不要担心自己做不出来,只要尽力而为就好了,我一般的目标是解决前三道,第 4 道 Hard 做不出来也没有心理负担。

参加完比赛之后,看下别人的解答,因为这几个题目都是自己苦思冥想过的,因此学习和进步地都挺快。

我最好的一次周赛成绩是全球 28 名,当看到自己的 id 显示在了全球排名的第一页,我非常兴奋,开心了一整天。

2. 模拟面试

对于大多数人来说,刷题的目的是找工作,那最终就要参加面试。一个人做题的过程是缺乏交流的,实际面试中会有交流互动。因此,推荐在面试前参加一下模拟面试。

另外,哪怕不参加模拟面试,给别人讲一下做题的思路和代码的实现过程也是大有裨益的。

需要参加模拟面试的也可以进「每日一题交流群」,我邀请了力扣全站排名第一的 storm 来做模拟面试官。

三、最后

上文总结了我想到的「LeetCode应该怎么刷?」的方法,最重要的还是坚持二字。做时间的朋友,努力付出就一定有收获。如果觉得刷题困难,就多多学习,多多交流,不要半途而废。

最后,希望大家都能够通过刷 LeetCode 获得成长,拿到自己满意的 Offer。

期待你的点赞、关注、分享

欢迎加入刷题群

目前已经近 2000 人加入了每日一题打卡群。加入方式是通过每日一题打卡网站,该网站每天都会同步力扣每日一题,这是个互相帮助、互相监督的算法题打卡网站,其地址是 https://www.ojeveryday.com/。

想加入千人刷题群的朋友,可以打开上面的链接地址,然后在左侧点击「加入组织」,提交力扣个人主页,即可进入刷题群。期待你早日加入。

关于作者

我是本文的作者是负雪明烛,毕业于北京邮电大学,目前就职于阿里巴巴。坚持刷算法题 5 年,共计刷了 800 多道算法题。做过的每个算法题都在 CSDN 上写题解博客,获得好评无数,CSDN 的累计阅读量已经 161万 次!博客地址是:https://blog.csdn.net/fuxuemingzhu

负雪明烛」公众号是负雪明烛维护的一个算法题解公众号,致力于帮助大家刷题、找工作。欢迎关注。

2021 年 2 月 13 日 负雪明烛 更新于 北京。

刷完 900 多道算法题的首次总结:LeetCode 应该怎么刷?相关推荐

  1. 刷了 1000 多道算法题,一点小小的心得!

    今天分享一下自己刷算法题目的经验. 首先,要明确你的目标,因为目标不同,刷算法的平台和方法也不同. 常见的目标有以下四种: 学习基本编程语法和思想 想找大厂工作,应对面试 算法竞赛 锻炼自己的思维 大 ...

  2. Re: 求助:5道算法题

    http://www.newsmth.net/frames.html 发信人: cutepig (cutepig), 信区: Algorithm 标  题: 求助:5道算法题 发信站: 水木社区 (S ...

  3. BAT七年经验,却抵不过外企面试的两道算法题?

    整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...

  4. 字节面试必须拿下的十道算法题,你会几道?

    前言 大家好,我是bigsai. 最近不少小伙伴跟我交流刷题肿么刷,我给的建议就是先剑指offer和力扣hot100,在这些题中还有些重要程度和出现频率是非常非常高的,今天给大家分享当今出现频率最高的 ...

  5. java的简单算法题_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  6. BAT 七年经验,却抵不过外企面试的两道算法题?

    整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...

  7. [2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  8. 【算法】两道算法题根据提供字母解决解码方法和城市的天际线天际线问题

    算法目录 解码方法 Java解答参考: 天际线问题 Java解答参考: 大家好,我是小冷. 上一篇了解了项目相关的知识点 接下来看下两道算法题吧,用Java解答,可能更能激发一下大脑思考. 解码方法 ...

  9. 2021年刷这600多道算法题,轻松进大厂

    截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...

  10. 2016恒生电子秋招笔试两道算法题

    2016恒生电子笔试两道算法题 1.求出1到100之间所有素数,要求时间复杂度最优. 我的最优解决方案是吧素数一个个放入一个素数数组里面(初始吧2放进去),后面的数只要判断是否能够整除这个素数数组里面 ...

最新文章

  1. python操作csv文件
  2. 简单json语句转化为map保存
  3. 物联网对石油燃气行业的作用
  4. 实操教程丨如何将一个k3s集群集成到Gitlab项目中
  5. QQ连连看棋盘数组找法:
  6. Unity有哪些让做项目事半功倍的插件值得推荐?
  7. css 语音,纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
  8. sql数据库去重语法_浅谈sql数据库去重_MySQL
  9. 自定义新浪微博分享按钮
  10. MVC多用户B2C商城系统源码分享
  11. 软件体系结构期末复习总结
  12. 设备发现协议SSDP实现
  13. java JDBC编程
  14. 移动通信网络架构的演进
  15. 人工智能数学基础-线性代数1:向量及向量加减法与数乘
  16. 新建一个工作空间,复制原来工作空间的配置
  17. ​python买书本 青少年编程电子学会python编程等级考试一级真题解析2022年3月
  18. mysql 介绍 怎么下载 驱动jar包 各种细节问题大详解
  19. 清华周界详解《基于图神经网络的事实验证》 | 百万人学AI
  20. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

热门文章

  1. iOS视频开发(一):视频采集
  2. 收款码三合一制作生成系统源码
  3. html修改字体大小到10像素,ps怎么修改字体大小
  4. 《吴忠与富富平》之一:秦统一前后的吴忠及秦汉对吴忠地区的开发
  5. 微控制器和微处理器的区别(含课本原图)
  6. 多元线性回归分析spss结果解读_SPSS 多元线性回归结果重要参数解读
  7. c语言max函数和min,使用函数获取值,查找max,查找min并以C语言显示
  8. 优启通做服务器系统,系统安装教程1:制作优启通PE启动盘
  9. 快手面试官:分布式环境下,如何实现session共享?
  10. 在java中调用mockjs生成模拟数据