感悟
平常我们在写算法题的时候,会花费大量的时间去搞懂算法,但是并没有花过多的时间去 弄明白 如何一步一步的想到怎么解决这道题,这导致了我们在遇到一个类似的新题的时候 甚至原题的时候根本无从下手;不知道用什么样的方法去解决这道题。
也没有花费时间在弄明白一个算法以后,这个算法应该被用到什么地方,什么时候被用到,这导致我们不能举一反三。
我想这就是我刷完了基础课,遇到一道原题后仍然不会做的原因吧。
个人认为做一道题,应该包括以下三个方面:
- 遇到一道题之后,如何靠自己在不看题解的情况下,去ac这道题。
- 算法本身,因为算法本来就很难,导致我们花费了大量的时间去搞懂算法,而忽略了前者
- 这个算法可以用在什么地方,我应该在解决什么问题的时候可以想到这个算法(或者说更细小的知识点)
好处:
1. 做到第一点 可以让我们独立的解决一道题,不看题解,自己手敲代码,一步一步想到这道题的解决方案
2. 做到第二点 可以让我们理解算法本身,用这个算法思想是怎么巧妙的解决这个问题的
3. 做到第三点 可以让我们举一反三,leetcode上两千多道算法题,我们根本不可能一道一道的刷完,一道一道的去记忆算法步骤,我们要的是举一反三。
做到上面三点会让 我们在做一道题的时候会花费很长的时间去做,去思考,但是这些都是值得的,会让我们以后再遇到这种类型的题就可以随手秒掉了
刷题的建议:
1:建议先去刷一遍算法基础课,把常用的算法过一遍,这一遍不要自己去想这做出来,因为这样相当于创建一个算法,要知道,创建一个算法要几十年甚至几百年的时间。
2:以后刷题必须要自己从头开始想,不要看题解!要是实在不会了要把 自己卡在了哪个地方记住,然后再去看题解,看懂了以后一定要想一想 以后再遇到这个卡点我应该怎么做;
3:后面就是反复练习的过程,一道题每重做一遍,你就会对这道题拿捏的更稳,想到解法的速度也就越快
楼主说的在理
在初期学算法时,做题时写不出来不要灰心,毕竟如果你之前没有学习过这种算法思想 ,从零创造出来是很难的
而当大致系统地学完一遍算法后,再开始自己独立做题 也是可以der
再到后面,面对之前自己做过的题目,尤其是模板题,可以时不时的做一做,提升熟练度和理解程度。
赞