科学的刷题方法:
1.每道题给自己20--30分钟的时间去思考
2.学会分类与总结。
LintCode LeetCode上的题都有tag
分类刷题,当一种类型的题刷多了,如果一个问题原来的解就是搜索的,可以把搜索类问题的共性找出来,当一个问题出现了这种共性,就往这种方向上想。
分类的另一个好处,可以按照专题进行学习,比如今天学动态规划,今天完成背包问题的动态规划,这样对这种问题的特征可以熟练掌握
3.学习好的代码,和好的程序风格,书上未必是最优的。可以从google/github上是否有更好的想法和实现,要学会站在巨人的肩膀上。
但是前提一定要自己认真思考过了,再去看别人的。
4.学会写笔记做总结。有笔记,在以后学习,还可以温习过去是如何想的。
同时,在笔记中,要记录并总结碰到的问题和自己的犯过的错误,为什么是Wrong Answer,为什么超时。避免犯同样的错误!!
总结经验教训,并生成在脑袋里,避免犯重复的错误。
5.Bug Free的重要性
1.严格限制思考时间,限制提交次数,要求一次过。
2.纸/白板上写code,然后粘贴到submit处。
解题思路。
1.先检查参数的合法性。