至于刷题的注意事项和基本原则,如下:
(1)刷算法题的一些原则
• 不可以不刷hard题
• 没有面试的时候,按照不同分类刷题。有面试的时候,优先看近期面经,然后看leetcode整理的这个公司的高频题,然后再看往年面经(比如一亩三分地里会大概率有面经)。
• 刷题数目要至少至少至少至少到300道以上,要不然手感上不去。在刷题早期的时候,看一道题然后就去立即看答案,学习答案的思路,然后把答案关闭,然后自己试着根据刚才学会的思路写一些。做个200-300道题目以后,再开始独立凭借自己的能力做题(而不是上来直接看答案)。也就是说,我认为刷题的早期更多是一个学习过程(学习答案如何做题),到中后期你积累了足够的经验后,再自己独立做题,当然了,在这种时候,依然会遇到不会的题目,那此时也尽量先自己多思考思考,然后再看答案,毕竟刷了200-300题后,你对刷题已经有感觉了,也应该尽量自己先独立做做看,依然不会的话,再看答案。
• 题目做对后要practice自己的英文--push自己用英文把题目原理和思路讲明白
• 对于不熟悉的、容易遗忘的数据结构、和自己经常容易忘记解法的题目,整理到错题本/cheatsheet,每隔几天看一下,面试前也要看一下
• 积极思考和查阅可能的followup问题,比如如何优化时间复杂度,数据量级如果巨大无比怎么办
○比如原题是10*10的数组,那主动 考虑1000亿*1000亿的数组怎么做
○比如目前complexity是n*log n,主动思考能变为n么
○比如原题是求父亲节点,那就主动思考,如果改为求父亲节点的父亲节点,or,兄弟节点,code应该怎么改,总之就是顺着题目要求deliver的
结果的那个方向然后顺藤摸瓜的自己思考如何加大题目难度