共计 1789 个字符,预计需要花费 5 分钟才能阅读完成。
1. 常看 Discussion。我置信很多同学为了刷题量,解开一道题后会急不可待地点开下一道题。更为甚者,很多同学把刷题的数量作为掂量程度的相对规范,比方“老师,我在 Leetcode 刷了 500 题,您看去面 Google 有心愿吗?”,后果该挂还是挂了。然而,你有没有试过思考其余过解决方案? 这里并不只是说在本人的代码上持续优化,而是点开 Discussion, 看看其他人有没有其余的思路,并思考他们的解法和你的有什么不同。也就是说,Discussion 也是刷题的一部分。同学们往后能够留神这点,留神剖析他人的思路,并确保你至多了解其中的一到两种。
2. 给本人计时 。练习某一类型的题目时,一开始给本人定 1 小时工夫,解不进去就去看 Solution,一开始即便做不进去也不必泄气,只有下一次遇到同类型的题目,本人的思路比上一次更进深刻,就是提高了。一开始慢一点没关系,只有坚持下去就好。从一开始有本人的思路,靠参考 Solution 写出代码。到看到同类题目时就有明确的思路,晓得最佳的解法。再到最初看到一道题时就晓得它的考察点,能短时间内写出代码。
3. 针对本人的弱点 。做那些你未曾涉足的题型,比重复练习你曾经熟知的题型更能裁减你的常识储备。千万不要胆怯做不进去,要敢于走出舒服区。Leetcode 上有 14 天的各类题型专业训练,从简略到难,还包含各类题目的原型和变种。能够通过这个专栏来裁减本人的题池。
4. 依照正确的程序刷题。 举荐优先刷的题目有:
- 热题 HOT 100 和面试精选题;
- 题号靠前和 Frequency 高的题;
- 刷哈希表,二分,二叉树,链表,DFS 等常见考点的题;
- 刷 Easy 和 Medium 难度的题足以应酬大部分 Entry Level 的面试了,Hard 难度的题在很少呈现,而且了解起来很费时间,刷起来性价比很低。然而同学工作几年后到了 Senior Level 可能就要开始在这 Hard 问题一块偏重了。
能够把这些题作为例题,这一步的工作就是收集这些例题并相熟他们的思路,让你当前再看到这些题的变种时可能像映射函数一样映射出解法。咱们之前有一期讲哈希表和哈希变种题的时候就讲过这个办法。
5. 按 Tag 分组定期温习。 从新做之前刷过的问题,有助于把握正确的解法。有些同学可能有过这样的经验,明明以前刷过这类题,过了一段时间再做还是不会,思路在脑子里就像蒙了一层雾一样,模摸糊糊感觉晓得怎么做,但就是写不进去。别放心,这是失常的学习过程。过一段时间从新回顾后,就会加深对这个 Tag 的印象,从而做到触类旁通。
\6. 依照正确的思路刷题 。很多同学刷生疏题时没有明确的思路,只是自觉地写一段代码,而后感觉不对,就把写进去的货色修修补补,写到最初本人也看不懂代码是干什么的。其实,把做一道题的流程列成步骤,就是以下几步:
第 1 步:思考这道题的考察点和最优解;
第 2 步:把本人的思路在纸上用伪代码的模式表达出来,例如:
A <- an intergar
B <- an array
C <- a nodelink
If <condition> Then
{
do
}
Elseif <condition> Then
{
do
}
Else
{
do
}
第 3 步:把伪代码转化成理论的代码;
第 4 步:依据 Edge Case 的理论状况 Debug。
后两步是不怎么花工夫的,只有你对题目有大抵的思路,把它用代码表达出来就只是工夫问题了,因而前两步是最重要的。同学们遇到新问题,大概率连思路也没有,此时也不要慌乱,依照咱们上边第 2 步讲过的定时法,在限度工夫内优先理清思路。让你当前在看到理论问题时,能条件反射般地想出解题思路。
7. 最初最重要的一点:坚持不懈。 俗话说一天不练琴要花三天找回手感,编程也是如此。一旦某天偷懒给本人放个假,轻则本人昨天刚记住的题马上就忘了,重则大脑可能就无奈从休假模式中回过神来了!通过每天做一定量的题,定期刷某个 Tag 的题,能够放弃本人的手感和编程思维,长此以往能力让常识真正变成本人的货色。这个过程听起来艰巨,但理论并不是这样的,万事开头难,难以保持的只有刚开始的时候。当你继续刷题一周,两周,一个月后,每天刷题就会像呼吸一样变成一件天然的事件,也就不再是一件须要逼迫的事件了。而且刷题也并不意味着是必须把 Code 写进去,Bug Free 的提交,明天比较忙,那么我看一道题,想一下思路,写一下伪代码,放弃一下状态,也是能够的。
本文由博客一文多发平台 OpenWrite 公布!