最后选的是兔法刷题法。毕竟直接看也不会,浪费时间太多,不如直接点击题解看答案——看几个经典的——开始复刻经典答案里面感觉最好的那个——提交看排名——看最好的那个代码——复刻最好的那个代码。
最好代码找法:
算法助手:
尽力将 LeetCode 上所有的题目都用动画的形式演示出来
https://github.com/MisterBooo/LeetCodeAnimation
摘抄下各个大神给的刷题方案,后面就对着这个来了:
作者:夜长安
链接:https://www.zhihu.com/question/280279208/answer/553161466
来源:知乎
我将自己这几个月的刷题经历都整理了下来,除了给出思路和关键点,还横向地对知识点进行整理,尽量做到一题多解,多题同解
。 现在GitHub仓库有20k的✨ , 欢迎大家关注。仓库地址: azl397985856/leetcode
第一遍按tag刷,第二遍一题多解,多题同解
个人建议,第一遍刷的时候可以先快速按照tag过一遍,快速感受一下常见数据结构和算法的套路,这样自己有一个感性的认识。
第二遍我们就不能像第一遍那样了,这个阶段我们需要多个角度思考问题,尽量做到一题多解,多题同解
。我们需要对问题的本质做一些深度的理解,将来碰到类似的问题我们才能够触类旁通。
但是很多人做了几遍,碰到新题还是没有任何头绪,这是一个常见的问题,这怎么办呢? 我们继续往下看。
艾宾浩斯记忆曲线
总结并记忆是学习以及刷题过程中非常重要的一环, 不管哪个阶段,我们都需要做对应的总结,这样将来我们再回过头看的时候,才能够快读拾起来。
信息输入大脑后,遗忘也就随之开始了。遗忘率随时间的流逝而先快后慢,特别是在刚刚识记的短时间里,遗忘最快,这就是著名的艾宾浩斯遗忘曲线。
anki就是根据艾宾浩斯记忆曲线
开发的一个软件,它是一个使记忆变得容易的学习软件。因为它是一个自定义多功能的记忆方式,可以大大减少你的学习时间,也可以大大提高 你的学习容量。 对于我本人而言,我在anki里面写了很多leetcode题目和套路的Card,然后anki会自动帮我安排复习时间,大大减少我的认知负担,提高了我的复习效率。
作者:lucifer
链接:https://www.zhihu.com/question/280279208/answer/824585814
来源:知乎
对于遇到的每个题目,事后我都做上标记:普通题目,难题、好题。此外,每个题目都分为以下几个步骤做好详细的笔记:
1. 原题目
2. 自己的第一遍解法
3. 网上好的解法
4. 自己可以改进的地方
5. 进一步精简优化自己的代码直至代码简无可简(这是非常关键的一步,到达这一步,才会发现获得能力的提升远远要超过简单地把题目解出来)
6. 获得的思考(或者学习到的地方,可以是算法、数据结构或者Java的特性—例如Stream等等)
每一个题目都经过至少一遍这样的迭代。这样几遍下来,我对于每个题目都有了更加深刻的理解,代码几乎达到最精简状态。(中间有略去几次迭代)总之,不断地学习别人的代码,改进自己的代码,不断地锤炼自己的代码,直至算法最优化,代码最简洁!潜移默化中,不仅对题目解法有了更深刻的理解(什么是最优解),而且也知道如何用最简洁的代码实现这个最优解。