刷题的方法:
第一遍:读懂题,在大脑中知道解体方法,可大致描述出来。要达到一看到题,就知道大致解题方向的地步。
第二遍:开始写代码。写代码前现在纸上演示出详细的算法(Solve it on Practice First)。写代码会让你关注具体的细节。此时碰到的各种值得注意的问题都要记录下来。 不懂或卡住的地方及时看别人的代码。
第三遍:按算法类型分类对比,从而掌握每一类题的解法。自己快速实现。
第四遍(Option): 使用不同的语言再实现一遍。同一道题的不同解法。(不同解法之间的相互变换)
-
要刷多少题
- 每个类型题10~20(动态规划多多益善)
- 总共200~300题
-
如何刷题?
- 每种类型的题目一起刷。e.g. 周一:树/链表, 周二:搜索, 周三: 动态规划。。。
- 第一遍:5min想不出来就看答案。
- 第二遍:尝试不看答案完整实现(一道题不要超过60min)
- 第三遍:尝试快速实现,如果15~20min内实现不了就看答案
-
看代码很重要!看代码很重要!看代码很重要!
- 看至少3~5中不同的实现,分析别人的代码,优缺点,为什么速度快/慢?
- 学习新的语言/算法/数据结构/API/模板/最佳实现
-
刷题工程中培养的能力
- 扩宽思路,至少能看出使用什么样的算法
- 数据规模->时间复杂度推算
- 代码风格:
-
- 一致性:命名/缩进/换行
-
- 有意义的变量名
-
其主旨为: 最少刷完前200道题
我把第一