对于新人而言,不应该自己死抠一个题目,如果想了一会没有任何思路,就应该果断看别人怎么写的。在理解了别人的做法之后,再凭理解和记忆在 LeetCode 的代码框里敲一遍。
「学习 = 学 + 习」。知识是学出来的,不是在自己脑子里蹦出来的;学过之后,还要自己动手练习。新手要勇敢地、经常地学习别人的解法和答案,然后凭理解敲代码练习。只要度过刷题初期的痛苦,后面就会越刷越快。
刷题顺序
合理的刷题顺序能降低难度,帮助我们在有限的时间里获得最快的成长。
LeetCode 现在将近 2000 道题,基本没有人能够全部刷完,而且对于参加面试者来说也没有必要刷特别多的题。许多人在面试前刷了 200 道题,基本够了;准备更充分的人,大概会刷 400 道题;能刷 600 道题目以上的,基本上可以收获一大堆 Offer 。
我推荐的刷题顺序的规则是:
- 按分类刷;每个分类从 Easy 到 Medium 顺序刷;
- 优先刷 树、链表、二分查找、DFS、BFS 等面试常考类型;
- 优先刷题号靠前的题目;
- 优先刷点赞较多的题目。
如果基本上能做到 Easy 题 100% 能做对,Medium 题经过思考或与面试官交流后能做对,基本就能拿到 Offer。在实际面试过程中,很少出 Hard 题,视能力刷 Hard 题。
跟别人学习
1)看别人的题解
主要看别人在解决这个题目的思路是什么。无论这个题你会不会,都要看下别人的解法,或许有新收获。
2)看别人的总结
这部分包括算法讲解、套路整理、刷题模板等。
「算法题 = 思路 + 模板」,思路需要通过看别人的解答以及讲解获得,模板就是做题的套路,既可以自己总结,也可以看别人总结好的。
做好笔记
写作过程能更好地帮助我们理清思路,也能帮助我们再做此题时快速想起以前的做法,还能见证我们自己的成长。
交流和监督
刷题最大的障碍是自己。特别是新手,很可能由于刚接触 LeetCode 感觉太难就没有毅力坚持下去,导致半途而废。而且,刷题更重要的是坚持,做题的感觉都需要手感进行保持的。