LeetCode 刷题隔天忘怎么办?

2020-07-15 18:55:16 +08:00
 hakunamatata11

忘了很正常。

「无忌,我教你的还记得多少?」「回太师傅,我只记得一大半」

「那,现在呢?」「已经剩下一小半了」

「那,现在呢?」「我已经把所有的全忘记了!」

「好,你可以上了…」

张教主的这个名场面也时刻发生在刷题中。想靠记住每道题的解法显然是不现实的,况且题目只会越刷越多。

刷一道算法题,求解的思考过程远比知道最终解法要重要。就好比数学 /物理定理,你知道了会用是一种境界,能完整证明它们又是另一种境界。所以如果可能的话,尽量不要让自己陷入靠记忆解决问题的地步。

要怎么做呢?我提供一个以前同学的例子。他本科是工科,研究生转了 CS 专业,毕业后刷题 3 个月拿到了 Facebook,Google,Amazon 的全职 offer 。他刷题的方法就是做笔记,这是他 3 个月刷题过程中整理的笔记,将近 900 页,你们感受下(笔记链接点这里

他刷题的原则很简单,不要把“题目数量”作为刷题指标,而应该把问题拆解,拆成具体的问题模式和对应的解决方法。用图来表示的话大概像是这样:

每道算法题都有其构成的基本单位,比如有什么数据结构、用到了某某算法等。通过将问题拆分,做类比分析思考,自行做“聚类操作”,我们就能构建自己的算法知识体系。这个过程做笔记是最有效的。

比如很多问题都可以转化成“Tree”或者“Graph”,或者“递归”

所以刷题实际上是不断抽象,越刷越少的过程。面试中遇到了所谓“新题”,很可能只是我们抽象总结得还不够。

很多题看过答案后,你以为自己懂了,其实并没懂。

就拿动态规划来说,刚开始刷的时候往往都摸不着头脑,看了答案之后恍然大悟,原来是这样,只要找到状态转移方程,之后就简单了。

然而答案一般直接告诉你了状态转移方程,却不会说明是如何找到状态转移方程的。这个思考过程在刷题中其实是欠缺的,下次遇到动规题还是很大可能不会。

回到刷题本身,不要寄太大希望于“速成”。一般要制定一个至少几个月的学习计划,根据自己当前的基础和水平做针对性训练。

针对算法面试,我也总结了面试常见知识点的考察频率和建议的刷题量。

在我主讲的《九章算法班》中,除了会讲如何刷题外,还会谈谈面试中正确沟通的技巧,培养 coding style 和 bug free 的能力。按照我的方法刷题,1 个月就能搞定算法面试。

戳我即可报名免费试听

785 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690336

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX