我是如何刷LeetCode的?

我就是那个 @量子位  答案里面提到的“lucifer 小哥哥”。

我本人从开始准备算法以来,大概经过了几个月的时间,这期间自己成长了很多,从刷题菜鸡,到现在对刷题套路,题型有了自己的理解,感受还是蛮多的。我本人不是算法高手,算是勤能补拙类型。不过经过几个月的学习和练习,不仅面试变得更加得心应手,而且在工作中写更容易写出干净优雅,性能好的代码。

我将自己这几个月的刷题经历都整理了下来,除了给出思路和关键点,还横向地对知识点进行整理,尽量做到一题多解,多题同解。现在GitHub仓库有20k的✨ , 欢迎大家关注。仓库地址:azl397985856/leetcode

那么今天我就来回答一下这个问题,谈一下我是怎么刷leetcode的

对于我来说,刷题的过程其实就是学习数据结构和算法的过程, 不仅仅是为了刷题而刷题,这样你才能感受到刷题的乐趣

我是如何刷LeetCode的?_第1张图片

第一遍按tag刷,第二遍一题多解,多题同解

个人建议,第一遍刷的时候可以先快速按照tag过一遍,快速感受一下常见数据结构和算法的套路,这样自己有一个感性的认识。

我是如何刷LeetCode的?_第2张图片

第二遍我们就不能像第一遍那样了,这个阶段我们需要多个角度思考问题,尽量做到一题多解,多题同解。我们需要对问题的本质做一些深度的理解,将来碰到类似的问题我们才能够触类旁通。

但是很多人做了几遍,碰到新题还是没有任何头绪,这是一个常见的问题,这怎么办呢?我们继续往下看。

艾宾浩斯记忆曲线

总结并记忆是学习以及刷题过程中非常重要的一环, 不管哪个阶段,我们都需要做对应的总结,这样将来我们再回过头看的时候,才能够快速拾起来。

信息输入大脑后,遗忘也就随之开始了。遗忘率随时间的流逝而先快后慢,特别是在刚刚识记的短时间里,遗忘最快,这就是著名的艾宾浩斯遗忘曲线。

我是如何刷LeetCode的?_第3张图片

anki就是根据艾宾浩斯记忆曲线开发的一个软件,它是一个使记忆变得容易的学习软件。因为它是一个自定义多功能的记忆方式,可以大大减少你的学习时间,也可以大大提高 你的学习容量。对于我本人而言,我在anki里面写了很多leetcode题目和套路的Card,然后anki会自动帮我安排复习时间,大大减少我的认知负担,提高了我的复习效率。

我是如何刷LeetCode的?_第4张图片

这个是我的anki card 大家可以直接导入使用,但是还是建议大家自己制作卡片,毕竟每个人情况不一样,并且制作卡片的过程也是记忆的过程。

使用方法:

anki - 文件 - 导入 - 下拉格式选择“打包的 anki集合”,然后选中你下载好的文件,确定即可。

更多关于anki使用方法的请查看anki官网

目前已更新卡片一览(仅列举正面)

  • 二分法解决问题的关键点是什么,相关问题有哪些?

  • 如何用栈的特点来简化操作, 涉及到的题目有哪些?

  • 双指针问题的思路以及相关题目有哪些?

  • 滑动窗口问题的思路以及相关题目有哪些?

  • 回溯法解题的思路以及相关题目有哪些?

  • 数论解决问题的关键点是什么,相关问题有哪些?

  • 位运算解决问题的关键点是什么,相关问题有哪些?

殊途同归

大家刷了很多题之后,就会发现来来回回,题目就那么几种类型,因此掌握已有题目类型是多么重要。那样leetcode出题的老师,很多也是在原有的题目基础上做了适当扩展(比如two-sum,two-sum2,three-sum, four-sum等等)或者改造(使得不那么一下子看出问题的本质,比如猴子吃香蕉问题)。

其中算法,主要是以下几种:

  • 基础技巧:分治、二分、贪心

  • 排序算法:快速排序、归并排序、计数排序

  • 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等

  • 图论:最短路径、最小生成树

  • 动态规划:背包问题、最长子序列

数据结构,主要有如下几种:

  • 数组与链表:单 / 双向链表

  • 栈与队列

  • 哈希表

  • 堆:最大堆 / 最小堆

  • 树与图:最近公共祖先、并查集

  • 字符串:前缀树(字典树) / 后缀树

我是如何刷LeetCode的?_第5张图片

(图片来自leetcode)

坚持

做到了以上几点,我们还需要坚持。这个其实是最难的,不管做什么事情,坚持都是最重要也是最难的。

为了督促自己,同时帮助大家成长,我在群里举办《每日一题》活动,每日一题是在交流群(包括微信和qq)里进行的一种活动,大家一起 解一道题,这样讨论问题更加集中,会得到更多的反馈。而且 这些题目可以被记录下来,日后会进行筛选添加到仓库的题解模块。

我是如何刷LeetCode的?_第6张图片

我是如何刷LeetCode的?_第7张图片

大家如果发现自己很难坚持下去,也可以加入我的群聊,我们互相监督。另外我还专门组建了slack群,有兴趣的可以加群后在群里喊即可。

「脑洞前端」带你从新的视角看前端!

长按识别二维码关注

我是如何刷LeetCode的?_第8张图片
640?wx_fmt=png

你可能感兴趣的:(我是如何刷LeetCode的?)