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

我是大二的时候开始接触LeetCode的,那时候lc只有400题,我本来打算每天做一个题,但是由于当时觉得题目太难没坚持下去。在大四考研后和研一研二的两年左右的时间,我刷了700多道题。那么我是怎么做到的呢?

刷完700多题后的首次总结:LeetCode应该怎么刷?_第1张图片

我打算分为两个部分来讲:入门篇、提高篇。

一、入门篇

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

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

就像每个课本都会有例题一样,只学纯知识大家都不知道怎么运用的。而我们在刷LeetCode的时候并没有例题可以给我们学习,因此新手会感到痛苦。新手不要害怕看别人的解法和答案,度过痛苦时期,后面就会越刷越快。

新手应该注重三个方面:基础知识、跟别人学习、做好笔记 。

1. 基础知识

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

我推荐《算法第4版》,看这个书的时候不用全部看,只看重点,比如前面的Java知识不用看,数学推导不用看。再推荐一本侯捷的《STL源码剖析》,这本书对理解C++ STL有重大帮助,看了之后绝对会对数据结构和算法有更深的理解,我看完这本书之后感觉相见恨晚啊。

2. 跟别人学习

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

又分为两种:

1)看别人的题解

主要看别人在解决这个题目的思路是什么。

推荐的题解作者有:

花花酱:基本每个题都有博客和视频,强烈推荐看他的视频。
负雪明烛:把重点放在分析上,每篇质量都很高。
Grandyang:通过举例子来让你明白该怎么做。
李威威,甜姨,柳婼,书影博客。

题解区的答案:英文版看lee215,中文版看liweiwei和sweetie,以及官方解答。

如果你会做这个题目,我也觉得应该看下别人怎么解决的,思路是不是一样。

比如想看负雪明烛的two sum题解,那么搜索方式就是加上fuxuemingzhu在后面搜:

刷完700多题后的首次总结:LeetCode应该怎么刷?_第2张图片

2)看别人的总结

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

负雪明烛说:”做题 = 想法 + 模板“,想法需要通过看别人的解答以及讲解获得,模板就是做题的套路和模板,既可以自己总结,也可以看别人总结好的。

首先是labuladong的算法小抄,在Github上两周就获得了 10k star!!!强烈推荐,特别是动态规划不懂的,可以看。

然后有负雪明烛的【LeetCode】代码模板,刷题必会,基本总结了所有的做题模板。

3. 做好笔记

在很多年前我就开始把每个做过的题目记录在CSDN上,现在我的博客浏览量已经将近100万了。

刷完700多题后的首次总结:LeetCode应该怎么刷?_第3张图片
我的做法是:任何题,无论难度,我都进行记录题目、想法、代码。虽然经常写博客的时间比写题的时间还多,但是把自己的想法讲解一遍才是真的懂了,更方便了自己之后看、以及大家交流。

当然,除了写题解,还要整理做题的方法、套路、模板,这些会随着你的经验慢慢形成的。

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

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

4. 交流和监督

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

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

我组织了”每日一题交流群“的活动,并且做了个网站http://140.143.79.116/#/check来监督大家打卡。群的规则是每天发题和打卡,如果一周没有参加的话就会被踢出群(如果有更好的监督方式请告诉我)。

刷完700多题后的首次总结:LeetCode应该怎么刷?_第4张图片

事实证明这种大家一起做同一道题目,并且一起交流讨论的氛围非常好。更多规则可以看下面的文章,我的联系方式在网站的首页。

负雪明烛:助力每日一题!每日一题打卡网站上线!

二、提高篇

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

1. 周赛

所谓周赛,就是每周日上午,LeetCode组织的一场比赛,总共4道题,一般是Easy一道,Medium两道,Hard一道。中英文网站同时开始,题目相同。

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

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

参加完比赛之后,看下别人的解答,因为都是自己苦思冥想过的方法,因此可以提高地特别快。

我最好的周赛成绩是全球28名,当时非常兴奋,开心了一整天。

2. 总结与分享

这一点和入门篇的做好笔记 略有重复,但是仍然要说,因为如果只是单纯的记录笔记和写每个题目的记录是不够的。

我在写博客的时候就落入了只记录不总结的误区中,单个题目的解决方案只会有正在做这个题的人看,但是你的提炼总结可以让你和大家都获得成长,这也是我写这个回答的原因。

上文中提到的labuladong的算法小抄就是个很好的总结与分享例子。

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

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

你可能感兴趣的:(经验,算法,LeetCode)