刷完 800 多题后的首次总结:LeetCode 应该怎么刷?

 

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

我是大二的时候开始接触 LeetCode 的,那时候 LeetCode 只有 400 题,我原本打算天天作 1 个题,可是因为当时以为题目太难没坚持下去。在大四考研后和研一研二的两年左右的时间,我刷了 700 多道题(如今已经800多),而且大多数题目作了 2~3 遍。那么我是怎么作到的呢?github

在这里插入图片描述

1、入门篇

1. 刷题姿式

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

大部分新手应该是只学过课本上的一些数据结构和算法的知识,尚未实际刷题经验,所以很是痛苦。算法

对于新人而言,不该该本身死抠一个题目,若是想了一会没有任何思路,就应该果断看别人怎么写的。在理解了别人的作法以后,再凭理解和记忆在 LeetCode 的代码框里敲一遍。数据结构

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

2. 基础知识

须要掌握经常使用的数据结构和算法的思想和适用场景。ide

学习基础知识,我推荐 《算法(第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 我的主页,而且群主管理严格,因此群里没有任何广告。刷题群已经持续将近一年,欢迎你们加入。
在这里插入图片描述

事实证实这种你们一块儿作同一道题目,而且一块儿交流讨论的氛围很是好。

2、提升篇

若是你已通过了小白的阶段,那么应该作些提升项目。

1. 周赛

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

在这里插入图片描述

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

不要担忧本身作不出来,只要尽力而为就行了,我通常的目标是解决前三道,第 4 道 Hard 作不出来也没有心理负担。

参加完比赛以后,看下别人的解答,由于这几个题目都是本身苦思冥想过的,所以学习和进步地都挺快。

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

2. 模拟面试

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

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

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

3、最后

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

最后,但愿你们都可以经过刷 LeetCode 得到成长,拿到本身满意的 Offer。

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

欢迎加入刷题群

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

想加入千人刷题群的朋友,能够打开上面的连接地址,而后在左侧点击「加入组织」,提交力扣我的主页,便可进入刷题群。期待你早日加入。

关于做者

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

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