- 想必学习算法的重要性不言而喻,在此不做赘述。接下来是怎么学的问题。
- 学习算法要把握住本质,不要被细节带偏。不要纠结于一道题的得失,要知道,leetcode上那么多算法,实在刷不完。因此要把常见题型刷熟练透彻。而熟练的过程是有步骤的。就像王阳明对学习的几个境界的描述一样,拿到一个算法题,大概会有以下几种反应:
- 这是啥,我咋看不懂题,题目要我做啥
- 喔,我读懂题了,但是没有一点思路
- 我能很快的找到一个最笨的方法解决,但是明显不是题目想要的答案
- 我能想到这个题要考啥知识点,但是写不出来
- 我能写出来,但是小细节把握不好
- 我能流畅的写下来
因此,学习算法也要有步骤有目的的循序渐进,才能在逐渐的学习过程中有所进步。不然搞题海战术的话,时间成本和学习效率都会大打折扣,得不偿失。
- 为了能够达到d的层次,首先要对已有的模式烂熟于心。也就是说需要对已有的常见的算法模式进行整理总结记忆。巧妇难为无米之炊,我们要心中有模版,才能在题来的时候有应对的武器。所以,第一阶段就是学习常见的算法模式,熟练掌握所有的模版套路,在思考一道题的时候去对号入座,这样学才会有一个模式而言,才会有效果。
- 为了达到e的层级,我们需要多去练习,也就是说每天都要写两道d层级已会的选择题,深入细节,恭于实践,做到这一步的要求就是不能懒,要勤动手,才能掌握。
- 为了达到f,需要我们有个具体详细的目标和deadline,这样我们做起来才会有紧迫感,效率也会逐渐提升。
- 千里之行,始于足下,开始吧,少年!
写于2021.9.17