点击上方的终端研发部,右上角选择“设为星标

每日早9点半,技术文章准时送上

公众号后台回复“学习”,获取作者独家秘制精品资料

往期文章

重磅!微软GitHub终于宣布官方App了

不容错过, Code Review 的最佳实践方案来了

牛逼哄洪的 Java 8 Stream,性能也牛逼么?

Java:new一个对象的过程中发生了什么?

华为清理34+老员工,你怎么看待这种狼性文化?

外包程序员加班猝死,家庭索赔无果!


引言

本人非计算机专业出身,本科期间一直觉得数据结构与算法是一项非常基础也重要的知识,但是由于自己可有可无的欲望和糟糕的自律能力,并没有深入地学习这项知识技能。但是,随着时间的流逝,无论在工作中、网络中还是朋友圈中,发现数据结构与算法是无比的重要,以至于任何一位牛人都无不逆天地掌握这项最基本的本领。所以,在2018年8月份,我下定决心通过刷LeetCode来锻炼这一本领——数据结构与算法。
从那时起,几乎是从0起步,很多知识都不了解,基本上每刷几道题都会卡到一个完全没有遇到过的知识点,尽管到现在也会时不时地发生。但是,我一直都在坚持,并且从未放弃,累计现在已经刷了421道题目(其实不止)。你也许会问这是为什么,当然,我会在文中的后面讲到。不过,在此之前,我不得不提我是怎么计划并走过这次还未完成的刷题之旅的——到底该如何刷LeetCode?

步骤

频率优先 —— 因人而异的刷题顺序

最开始的前两个月,我基本上是按照题目的序号来刷。接着,我发现我基本上每天都会使用LeetCode,索性购买了LeetCode的年度会员,价格为159美元,差不多1100多人民币。其实,这个价格满贵的,但是考虑到知识是无价的,就下定决心订阅了会员。
关于会员,我的建议是可以购买中国区的LeetCode会员,这个价位一年仅人民币499元。其次,还要看性价比,如果你真的并不是几乎每天都使用LeetCode的话,那么可以考虑月度会员,甚至不要购买。
话说回来,在购买会员之后,我采用了频率的方式进行刷题。这么做有以下两个原因:

到底该如何刷LeetCode – 频率排序
优先刷高质量(高频率)的题目
给自己足够的思考时间,不断地总结每种类型的题目的共性或区别,加深理解
当然,有人会提倡按照分类来刷题。我是这样认为,分类来说可以在短期的学习效率上更为高效,因为专题的训练可以让自己在短时间内加深对某一个类型的熟悉程度。但是,如果时间是比较充裕的话,我觉得可以按照频率由高到低进行刷题,这样保证每种类型的题目交叉地进行训练。致使我们不得不在不同地题型中来回的切换思路,能够更深入地理解题目的共性与区别。

谷歌+视频 —— 寻求答案

当然,在刷题时难免会遇到完全不知道的知识点,甚至看了大佬的答案(Solution)之后还是一知半解。这时,以我的经验可以首先去谷歌(Google)搜索一下题目的对应的知识点,比如说题目——Optimize Water Distribution in a Village 的考察点是最小生成树(MST),那么可以通过谷歌收到相应地文献资料。这里推荐两个来源:
维基百科
geeksforgeeks
以上题为例,可以查阅这两篇文章:
最小生成树——维基百科
最小生成树贪心算法——geeksforgeeks
如果还是看得不明白,那么可以到YouTube或者B站搜索下相关的视频讲解。推荐一个讲解的非常好的Up主——花花酱。
同时,我在学习的过程中,也成立了自己的LeetCode系列的频道。
小旭讲解算法之路@B站
小旭讲解算法之路@YouTube

到底该如何刷LeetCode – 小旭讲解
基本上,通过文献的阅读以及手把手地视频讲解,凭借着我们聪明的小脑瓜都可以迎刃而解了。
但是,总是有一些题目我们无法理解的。比如,以我目前的水平去解决Codeforces上面的某些超难的题目时,尽管我查阅了所有的资料,无论是文章还是视频,都无法理解。这种情况下,我觉得是自身的水平和题目要求的标准差距是巨大的,所以目前的决策就是——“放弃”。但这并不能于真正的放弃,而是先修炼内功,打好基础,慢慢地学习高阶的内容,当能力慢慢达到的时候,自然就会快速的学会之前怎么也看不懂的题目了。

思考归类 —— 形成自我的知识体系

在刷题的过程中更为重要的是,要不断地停下来思考与归类总结。即不断地总结学过的知识,找出其共性与区别,由点到面地梳理成自我的知识体系,形成一种模式(Pattern)。
  • 输入
  • 刷题 —— 发现新的知识点
  • 总结思考,形成知识体系
  • 输出
  • 参加竞赛——验证水平(比赛名次)
我把学习的过程分成了两大模块,输入与输出。我们看到,输入有刷题和总结两块,其最终都是提升自我的固有知识。在输出方面,列举了参加竞赛,是为了验证我们的能力水平。所以,切记不要混淆了这里的输入与输出。误把输出当成了输入,一味地刷同样的知识点的题目,却总也不思考与总结。

刻意练习 —— 高效的学习方法

在这里,我提及一种成功的学习方法。这种方法我也在一直使用——刻意练习。这种方法分成三个步骤:
  • 梳理知识网络,拆解知识点
  • 深入练习每一个要点
  • 实时反馈
首先,我们要梳理需要学习的内容,至少有一个整体的知识框架。这个框架可以通过阅读权威性的材料、文章,也可以通过自身不断的学习总结得来。
其次,针对每一项知识点,进行专项练习,加强加深对每一个知识点的理解。
最后,通过与别人的交流沟通,及时找到未发现的问题,进行反复地练习。
可以看出,通过上面提到的学习步骤——按照频率刷题,找到新的知识点,思考归类,我们可以慢慢地梳理成知识网络。然后,不定期的做一些专项的训练,比如AcWing不定期的活动——2019暑期LeetCode打卡,来深入每一个知识点,加强对每一个知识点的理解。最后,在不断地发现问题,解决问题,形成闭环。

学习资源

除了上面提到的视频UP主与文献网站之外,目前我在看的,并且觉得非常实用的书籍是——《算法竞赛进阶指南》。
这本书由一位北大毕业的大佬——李煜东所著。从作者的履历来看,有着丰富的竞赛经验,如ACM ICPC2015亚洲区域赛冠军、入选世界总决赛。从书中的内容来看,是一本侧重进阶类的书籍。
基本上,每一次遇到的新知识点都可以在书中找到答案。更重要的是,书中的语言简洁明了、讲述得清晰到位,同时还有着丰富的代码示例与例题。所以,我非常愿意推荐这本书给正在刷题或者学习的朋友们。相信,你一定能在这本书中受益无穷。

为什么我坚持不下来?

很多人都有这样的苦恼,在之前的时间里,这也是我的一大难题。但是如今,我却完完全全地甩开了这一个让人无比愧疚的魔鬼——懒惰。
对,是懒惰让我们坚持不下来。所以问题就变成了如何克服懒惰?在解答这个问题之前,我想分享一句话——一个人能否做成一件事,不在于有没有能力完成这件事,而是在于对这件事到底有多大的渴望!!!
我想,也许你已经悟道了答案——树立自己的梦想。
唯有强大的梦想才是克服懒惰走向胜利的精神支柱,如果你的梦想足够的强大,如果你对梦想有足够的“贪婪”,那么你不可能坚持不下来,不可能在每天的自责与愧疚中度过,你一定会在没有闹钟的情况下的5:30醒来,并果断地起身学习,你一定会在没有任何人催促的情况下,雷打不动地坚持学习。
所以,答案就是建立自己强大的梦想。如果你不知道该如何树立自己的强大的梦想,也许这个UP主会帮到你——清华生保持高效率奋斗的五大因素 | 梦想如何让你的人生充满意义。

总结

相信通过上面的分享,能够给广大的学习的朋友带来一定的思考与建议。我们每一个人都有同样的时间,但是却在成就着不一样的成绩。我相信,如果你梳理了正确的学习计划与方法,同时树立了强大的梦想,那么你自然就会得到这样的一个答案——到底该如何刷LeetCode?
最后,以文中的一句话结尾,与君共勉—— 一个人能否做成一件事,不在于有没有能力完成这件事,而是在于对这件事到底有多大的渴望 。

外包程序员加班猝死,家庭索赔无果!

这就么几条指令,Git在不会我跪搓衣板了!

重磅!微软GitHub终于宣布官方App了

今日头条APP启动很快,原来是做了这些优化?

Google 出品的 Java 编码规范,强烈推荐,既权威又科学!

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

喜欢就给个“在看

进入到Google之前,一定要学会刷LeetCode!!相关推荐

  1. 惊了,AI已经学会刷LeetCode了!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你在面试 ...

  2. 想学会刷机就得学会怎么刷小米4S这种手机就能会了

    小米4刷机图文教程一步一个脚印让你学会刷自己手机 小米4刷机分为线刷和卡刷,卡刷的基础是需要Recovery,那么如果我们手机无法进入Recovery模式该怎么办呢?那么这里就牵涉到一个更深层次的问题 ...

  3. Google Pixel 解锁BL、刷入Twrp、magisk Root、安装 Xposed

    Google Pixel 解锁 BL.刷入Twrp及Root :http://www.itfanr.cc/2018/10/16/google-pixel-unlock-bl-and-root/ Pix ...

  4. 刷leetcode是什么样的体验?【转】

    转自:https://www.zhihu.com/question/32322023 刷leetcode是什么样的体验? https://leetcode.com/ 1 条评论 默认排序 按时间排序 ...

  5. python刷leetcode_零基础python刷leetcode -- 1. Two Sum

    算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,从第一题开始,从简单题开始零基础python刷leetcode之旅. Two Sum 首先过一下pyth ...

  6. GitHub 热点速览:刷 LeetCode 的正确姿势!

    作者 | HelloGitHub-小鱼干 责编 | 郭芮 找对路子,事半功倍,正如本周 GitHub Trending #刷 LeetCode# 主题想表达的那般,正确的学习姿势方能让人走得更远,走进 ...

  7. 如何快速高效的刷Leetcode

    前言 随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例.这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数 ...

  8. GitHub 热点速览 Vol.18:刷 LeetCode 的正确姿势

    作者:HelloGitHub-小鱼干 摘要:找对路子,事半功倍,正如本周 GitHub Trending #刷 LeetCode# 主题想表达的那般,正确的学习姿势方能让人走得更远,走进大厂 ???? ...

  9. leetcode怎么用时间刷_大家都是如何刷 LeetCode 的?

    2020年4月更新: 跳槽告一段落,开启新的旅程.不用再爆肝刷题了,但还会做周赛保持手感. TL, DR 太长不看零基础先去学一点"数据结构","算法设计与分析" ...

最新文章

  1. java - 第一阶段总结
  2. hihoCoder 第136周 优化延迟(二分答案+手写堆)
  3. 下载SSH的jar包
  4. Asp.net 2.0 发送电子邮件
  5. Java连续获取两个输入,java 获取控制台的输入的两个方法
  6. 数据结构与算法——搜索
  7. matlab相机标定畸变参数,相机标定的原理与意义及OpenCVMatlab实现差异小结.doc
  8. 刘强东卸任京东 CEO,“二号位”徐雷接棒:三大电商巨头“二把手”正式集齐
  9. 毅航产品—模拟载板I
  10. 磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢...
  11. 40. 数组中只出现一次的数字(C++版本)
  12. 电脑集成显卡莫名消失与重新恢复的过程,以华硕Z97-K主板为例说明
  13. 采用通信方式控制台达B2伺服驱动器运行在速度模式
  14. Ignore the empty nacos configuration and get it based on dataIdnacos配置中心 踩坑
  15. 对全微分的一点理解。
  16. window下webrtc编译m84
  17. 好用的识别植物的软件app合集分享,快码住了
  18. Tensorflow图像处理相关操作
  19. Splash抓取jd
  20. 龙测独家AI全新功能上线,手机无感录制,AI自动生成测试用例

热门文章

  1. Give Candies
  2. 《瞿葩的数字游戏》T3-三角圣地,洛谷P2675,Lucas定理
  3. MySQL单表查询与多表联查
  4. java软件设计教学大纲_Java程序设计课程教学大纲
  5. 今日事今日毕,sublime编辑器的插件PlainTasks
  6. 深圳Maker Faire创客市集:国内外创客组团来参展
  7. 解答:c语言中gets是什么意思
  8. 长期使用耳机有危害吗?戴耳机的时候请注意这几点
  9. python中天天向上的力量b_2018.4.8(Python)基本数据类型 天天向上的力量 (def函数的定义)...
  10. [PPT] PPT 录制视频功能.