高级农民
- 积分
- 1393
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2017-9-16
- 最后登录
- 1970-1-1
|
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
菜鸡依然是那个菜鸡,菜鸡会继续努力。 前言
2020年08月23日下午5时许,本菜在leetcode中文网站上刷了400题。easy刷了300,medium也刷了有100题。~~各位大佬肯定又得嘲笑我了,但菜鸡还是得从头打基础啊......~~
**时间线**
从6月初到8月底。
总共400题的话,每天刷题量真心不多......但是能刷到400题俺还是挺开心的欸嘿嘿嘿。
毕竟已经好久没有坚持这么久去做一件事情了。
有些想法,送给想要刷题或者没能坚持的小白(大概适用于被本科算法和数据结构打击到近乎抑郁的,无数次心理建设都失败了的孩子555摸摸),大佬可以离直接不看了。一点点小总结小分享写在下面吧~
适用对象
- 大一大二孩纸
- 代码小白/菜鸡(就是我)
- 不急着找工作/想把刷题当作爱好的朋友(就是我)
刷题思路
**日拱一卒,功不唐捐。**
简单题为主,中等题为辅。困难题知道自己是做不出来的,所以放着不做。
简单题如果做不出来,直接抄答案。
简单题刷到200题左右,可以适度加些中等题。
对于中等题,同样方法。如果看一眼没思路/觉得麻烦,就直接抄答案。
300题左右的时候,以中等题为主。按照 `tag` 进行刷题,一周七天每天一个 `tag` 循环(参考**b站花花酱**的视频介绍),注意思路的积累,遇到很好的题可以写题解。
**值得注意的是,做过的题一定一定要及时复习!养成随时标星的好习惯,即便不做新题也要每天看做过的题目。因为抄来的代码不一定能够内化成你自己的。而只有内化的部分才能真正提高代码能力。**
思路分析
对于小白/菜鸡来讲,最重要的是什么?!是每天刷了几道题吗???是做了几道难题吗???根本不是!!!
对于小白/菜鸡来讲,保持刷题兴趣并且坚持下来才是最重要的!!!何况能坚持下来都已经很不错了好吗!!!
因此其他什么正确率啊时间啊刷题量啊这些!统统往后放!
对于小白/菜鸡来讲,能做出一道 `easy` 的题目都很不错了好吗!!!
因此先从 `easy` 题目开始刷的话,更有利于培养自己的自信心。虽然在刷题前期对于编码水平的提高并不明显。但无论是自己写代码还是抄代码,都能或多或少提高自己打字的速度(这也算一种提高!)
但是不能总是只刷 `easy` 题目,因此在积累一定的题量之后(这个时候直观感受是打字速度小幅度提高,很多题有了自己的思路但还是不太熟练),可以适当增加中等难度题目的训练。
方法依然是不会就抄。
额准确地说应该是抄,尽可能多的抄,尽可能多的重复。
对抗遗忘的最佳方法就是 **时常复习**。
~~不知为何上大学之后老师和周围同学就强调做题要自己想自己想自己想。对于这点我真的很无语,难道花1~2h做出一道简单题的价值很大吗?做不出简单题目很大程度就是自己思维受限/方法不足/编码量不够,所以在这个阶段抄抄代码什么的根本不算啥。如果不抄代码的话,自己吭哧吭哧做出来题花了一堆时间,反而会更让自己坚持不下去。~~
刷题工具
1. 官网
2. vscode 的 leetcode 插件
- 特别推荐!!!!非常好用!!!!
官网直接撸代码
优点:
1. 更加真实模拟白板写代码
2. 更方便看讨论和各种五花八门的题解
3. 中文官网有关注功能,可以结交各式大佬
缺点:
1. 中文官网上很多让充会员的引诱选项,以及一些面试啊找工作啊之类的帖子,容易分神,效率降低
2. 题解质量参差不齐,有的根本看不懂 |
vscode的leetcode插件
优点:
1. 页面简洁大方(IDE用起来不要太舒服)
2. 提供提交和测试功能,很方便
3. 更容易专注,不易分神
4. 每道题目提供点赞最多的解答,抄起答案来十分方便
缺点:
1. 有些时候连不上...就没办法查看解答了
2. 题目更新速度不是很快(因为中文官网上各种各样的什么专题,感觉爬虫爬起来估计也挺麻烦的,咱不太了解这个插件的实现机制)
3. 按照tag刷题的时候不知道题目难度(这没啥办法) |
如果不是有vscode的leetcode插件,我相信自己绝对刷不到这么多题......
做题提示
很大程度上,做题多少并不决定编码水平和思维能力。关键在于**将知识内化为自己的东西**。
即便是刷了很多题,如果有很多题都是抄的,并且没有及时反思总结,也没有重复刷。那也是白搭。还不如绞尽脑汁做题带来的提升大。
我的刷题思路就是 **重复** 。一道题我可以一遍不会,可以两遍不会,可以三遍不会,重复到直到自己会为止。正常情况下一遍不会的题,抄过代码之后第二遍还是可能不会,那就再抄一遍,接着继续做第三遍第四遍第五遍。
如果没有足够的耐心和时间投入的话,菜鸡永远只能是菜鸡。
可能兄弟们会很不屑地说,这样刷题很低效啊。hhh刷题肯定是公说公有理啦。我的经历和自己的能力告诉我,慢即是快,重复即真理。毕竟适合自己的才是最好的。
至于面试什么的,面试真的是随缘吧。面试可以说是机会。但是机会偏爱有准备的头脑。如果连面试机会都没有,那只能从自己身上好好反思自己,然后沉下心来提高自身。
刷着刷着题就不会这么烦躁了。有一种万籁俱寂的感觉。这种沉下心来的感觉真的很好很好。
除此之外,推荐使用 wakatime 和 github 分别记录自己每天写代码的时间以及每天刷的题。谁不想看肉眼可见的进步呢.jpg
后记(夹杂着个人情感的自恋又心酸的百感交集的杂记,可不看)
为何要刷题
我非常坚信大部分人刷题是为了 **找到更好的工作** 。事实上确实如此,这些刷题网站上的题目大都为面试准备。再者说了,如果真的是想 **学习算法** ,那为啥不直接去看 **公开课** 或者去打 **ACM** 呢。
最开始我也这么想的,但在刷题的过程中,我的想法发生了一些改变。主要原因在于,我发现,如果一个人是出于 **极强的功利心** 而去做某件自己几乎不感兴趣的事情,那是 **很难坚持下来的**。尤其在发现自己这也不会那也不会看着白花花的题目描述就觉得很混乱的小白来讲。
更何况小白/菜鸡们本来就已经或多或少被这些题目虐过了,很难再对这些东西提起兴趣。
因此,首先需要端正一个态度:**不能急功近利,一步一个脚印,自己学到了的东西才是真的**。
以我自己为例,大概可以归结为,因为学校课程设置和其他阴差阳错的所谓缘分导致近两年都在写前端垃圾页面,没有怎么碰过算法。并且因为很长时间写前端而迷失了自己,忘记了自己真正喜欢真正喜欢的东西到底是什么。在今年3月拿到中流的国外大学offer之后,被小伙伴拉着刷题。但是专注于牛客《剑指Offer》上的题于是没有刷leetcode,6月开始刷的时候《剑指Offer》上的题几乎快忘光了。于是只能从头刷起。
最开始的几天十分难熬,我不知道该刷什么题,刷题姿势到底是啥。中等题不是想不出来而是想出来流程但写不出来,难题就纯粹想不出来(算法都还给老师了一点都不假)。问题是我一想到以后就得每天这样暗无天日地刷题就很难受很难受。于是才上网看了一堆刷题建议。
之后几天,在清楚认识到自己的能力后,决定从简单题开始刷。接着就发现这么刷起来实在是爽爆了,毕竟不会就抄答案这事儿!美滋滋!但后来觉得其实除了手速上去了,其他提高不是很多,于是又很沮丧(不想刷了)。
但该刷还是得刷啊......于是只能痛定思痛,反思自己。结果发现是自己抄代码抄的太多了...有些题目过于依赖题解,又没有及时反思和总结。
所以后来我决定,以搞懂题目为基础做题,不再过分追求每天多少多少题,而追求完成题目之后的反思以及对已抄过题目的复习。这样每天做题量直接下降到原来的1/3......
结果算不上很好,因为有些题第二遍还是很不会。但结果也不算很坏,因为还有一些题我第二遍能自己做出来了,并且还会不自觉去分析分析方法的时间复杂度/空间复杂度,主动去看有没有什么优化的方法。而且心态也逐渐平和了下来。总体而言有一定收获。
这样刷题刷到了7月中旬。很大程度上让我继续改变的是**学习签证下发的时间实在是让人窒息,导致我直接申请了defer**。defer之后也不想去找实习(自己太菜了找实习实在浪费时间,家里也不缺我实习赚的那点钱),于是更能够沉下心来认真刷题了。
这时候刷题量有了一定的积累,很开心地意识到自己思维能力不再是简单的CURD之后,集中精力向中等难度的题目发起挑战。这之后的做题量进一步下降到原来的3/4......
中等难度的题目和简单难度的题目区分不是特别特别大,有很多easy的题目甚至比medium题目还要拐弯抹角。最开始刷medium是随便看眼缘,结果发现这种和easy一样的选题方法实在是太过naive,因为如果不把相同类型的题目放在一起,真的很难想到一道题到底该从哪里下手。就算知道也会因为各种各样奇奇怪怪的理由做不出来。
于是改变策略,采纳花花酱大佬的视频中的建议,每天拿一个 `tag` 开刷。这种方法的好处显而易见,把相同类型的题目放在一起做,思路更加清晰。有些题目的板子甚至可以简单改改就直接上了。
刷着刷着又不行了,因为 `tag` 乱七八糟,而且太多了。于是在经过慎重分析后,确定刷题的 `tag` 为基本数据结构 - 搜索 - 动态规划 - 其他。总体而言就这几类,那么也没必要看那些乱七八糟的 `tag` 了。毕竟基本思想才是经典哇。
然后刷到了350题。这才发现自己没有一个很系统的东西。比如说很多基本操作还是会经常忘记,很多基本思路是有一套板子的。于是开始有意识地整理这些东西。虽然现在还不是很多,但我相信不远的未来它们会多起来。
就像跑马拉松一样,我给自己定了一些小目标。以50题作为单位,每完成50题都会很开心很开心,很飘很飘。很开心很激动很兴奋,就像玩游戏打怪兽一样,感觉又升了一级。
这个时候我就会点开那几个我关注的大佬的leetcode首页,然后发现他们都刷到1400+题目了,排名都100以内了。
这个时候我不甘心,就会点开自己的主页,看自己已经坚持了很久了(3个月对我来讲真的算长的),排名也每天都在进步。然后就又飘了。
我还记得刷到100题的时候真的超兴奋的!恨不得发条朋友圈告诉大伙儿,我刷到100题了!!!!但理智拦住了我。
其实拦住我的不是理智,而是我打开了一亩三分地的刷题版,看置顶帖子是“900+刷题经验贴”......
我这100题根本屁都不算好吗!更何况是easy难度!
于是又开始刷题了,这次的目标是250题。刷到250那天,真的很不凑巧,好像是吃饭结果汤洒了。但仍然挡不住我的兴奋。“哈哈哈哈哈我刷到250题了!!!”我又想发朋友圈了。但理智拦住了我。
其实拦住我的不是理智,而是我又打开了一亩三分地的刷题版,结果发现刷到700+、400+的大有人在......
我这250题根本啥都不算的好吗!更何况是easy难度!
于是开始有意识地看medium难度的题目,结果发现看不了几题就真的啥都不会了,只能滚回easy继续刷。平均一个星期有两三道medium题目。
刷到340题的时候,已经关注了一堆大佬。还有很多很多同学是我在leetcode上刷不下去题的时候搜到的......发现他们都在做hard和medium还都500+题目,就觉得他们能找到很好的工作是有原因的。
这个时候我基本已经转到了medium题目,也不自觉地会开始想要整理一些东西,只属于我的总结,于是开始写一些题解(虽然不是很多)。
现在刷到了400题。当然还是很兴奋很兴奋了。但是先前经验告诉我,刷题量多的人前面有一堆呢,在中文网站上排在我前面的都有五六千号人呢。而且周赛我也没有打过,以现在的水平能做两题已经非常非常好了。
但现在的心情还是比较平静吧(毕竟自己要读研究生)。因为罗马帝国不是一天造就的。
我会继续努力的。
刷题思路背景
在下定决心刷leetcode的时候,我查了一堆资料(知乎的专门问答和地里的帖子)。原因在于大学四年的种种经历把我磨成了一个**非常没有耐心和恒心**的人,不确定好自己的刷题思路真的没办法坚持。
经过很多刷帖,发现刷题也分各大门派。什么龟系啊兔系啊各种各样,眼花缭乱。
到底哪个适用于我呢?
龟系吗?每天刷题不多但是每一题都写题解,分析很多思路?
兔系吗?每天刷很多题但是不怎么总结,凭题量堆?
首先,每一题都写题解这对于我来讲是没办法做到的。本来就是个猴急猴急的人,再加上强迫症,一篇题解耗费个一两个小时写完,写完后还不一定再看。一天总共就24个小时,每天刷题总共就不超过6个小时,怎么可能拿出宝贵的一两个小时写一个题目的题解啊。
其次,这题目其实就跟数学题一样,经历过高考的残酷的人都知道,没有刷题量就算再聪明脑子转的再灵都没用。即便是重复的题,重新刷一遍都会有不同的体会,再者说了,就算没有什么体会,也可以锻炼手速啊!那些只刷50+题目就想得到很大提高的家伙们无疑是痴人说梦罢了(当然重复刷了很多很多遍hard题目认真写题解的家伙们除外)。
再者说了,我本来就是个辣鸡......
因此适合自己的才是最好的。能提高自己能力/水平的才是最合适的。
最后的最后
很多事情只有坚持下来才有意义。
希望把刷题作为人生的一个乐趣。
希望我们都可以承受生活之重负,并且努力向前奔跑。
补充内容 (2021-1-26 22:01):
更新,来自某个时间点又遇到瓶颈的本人。
现在遇到的问题:不会的题还不会,会了的题/曾经抄过的题也有不会的。
刷了很多题,但没有及时复习,也没有建立知识体系。
反思:1.放弃追求题量 2.看普林斯顿的算法课
补充内容 (2021-1-26 22:04):
刷到现在(700),突然理解为啥大学老师们不让直接抄答案了。
抄答案带来的严重问题是思维固化,不利于培养分析问题的能力。
当然这是在刷了也抄了很多题的基础上领悟的,可能没积累一定题量还是得适量抄一抄答案。 |
 组图打开中,请稍候......
上一篇: leetcode 双周赛 ac 打卡留念下一篇: 109题求解。为何需要 pre 这个变量呢?
|