覃超-算法训练营 学习方法分享[1] 如何精通一个领域

转载说明:文章内容来自 极客大学算法训练营。
版权归极客大学、覃超老师以及算法训练营的小伙伴所有。如有涉及侵权,请联系我删除,谢谢。



精通一个领域的三步走方式

在这里插入图片描述

切碎知识点

1. 切碎知识点

  • 庖丁解牛的故事
  • 将算法数据结构分解成一块一块相对简单化、脉络化的知识脑图,脉络相连。
  • 引用Elon Musk的话:(引自reddit):

在这里插入图片描述
任何一个知识体系都是一棵树,如果要掌握某个领域的关键知识,就需要将知识变成一颗树状结构.有最基本的根,然后分出主干、分出枝叶。最后每个知识点和你所熟悉的知识挂靠在一起,成为树状结构。


人脑不适合记忆、理解孤立的知识,脑图有助于理解。

2. 如何达到职业顶尖玩家的水平

如果只是停留在和寝室室友一盘盘打游戏的话,无法达到职业水平
顶级玩家都要把每部分专门拿出来练习,不断反复练习、刻意练习,可以达到职业顶尖水平。

在这里插入图片描述

3. 对数据结构和算法进行分类

1. 对数据结构进行分类

在这里插入图片描述

  • 一维数据结构中,高级数据结构是面试的重点
  • 二维数据结构可以看成从一维数据结构中泛化而来
2. 对算法进行分点

前三点类似于几何公理,是算法的基础,是所有算法、数据结构的基石。最朴素的运算操作。

最后将算法化繁为简之后,可以发现它的根本就是找到它的重复单元,基于重复单元泛化成高级数据结构。所有的复杂算法,其实就是找它的重复单元是什么。
在这里插入图片描述

五点高级算法:
在这里插入图片描述


数据结构和算法学习脑图和学习路线图

在这里插入图片描述
在这里插入图片描述
先默识数据结构,先理解概念点,后面慢慢上手掌握,同时在学习细分知识的时候,不断复习。(比如某一算法的时间复杂度、空间复杂度等)


刻意练习

刻意练习

练习基本功:区别职业选手和业余选手的根本。

刷算法题的最大误区:做一个算法题目的时候,只做一遍,这就是练习和切题的最大误区。一遍是完全不够的。就像是体育选手,一个动作不可能只做一遍就熟练,也没法将其变成一个条件反射的动作。
在这里插入图片描述

  • 过遍数:类似于背单词,要多背几遍。
  • 五遍刷题法(五毒神掌)
  • 练习自己的弱项,练习实力上缺陷的地方。走出舒适区。 在这里插入图片描述
    • 拿CS游戏为例: 开黑很爽,专项练习更有助于提高。可以专门开地图练习自己不熟悉的枪(如AK),越是不熟悉而且平时常用,越要多练习。
    • 在学习动态规划的时候,主动刻意练习二十上百道题,逼自己练习,可以达到熟练的水平。
    • 国家队乒乓球练习:反复练习一个动作,先无球,后有球,每天坚持练习,将基本功练扎实。(不要烦leetcode上的题目过于重复,这有助于练习基本功)
    • 职业台球选手,在练习时都是练习很工整的球阵型。就类似于在leetcode上反复不断的练习【典型的】【同一个】题目。不断的过遍数。
      在这里插入图片描述
    • 内心不要浮躁,不要总想着用一些高大上的框架。先将基本功练好,后面在工程中coding才能事半功倍。职业选手的训练方法如此,何况普通人。

反馈(feedback)

反馈分为两种:主动反馈和被动反馈
在这里插入图片描述


刷题技巧(五毒神掌)

1. 切题四件套

在写任何一个题目、面试答一个题目之前,先养成四步系统化的思考题目的方式(切题四件套):

  1. clarification(多看几次题目,和面试官多沟通,确保理解题目准确)
  2. Possible Solutions(非常重要!看到题目之后,想【所有可能的解法】来解题,先过一遍。 不要只用想到的第一种写法去解题),比较不同的方法时间、空间复杂度的区别,从中找出最优解法
    • Compare(space/time)
    • optimal(加强)
  3. Coding 写代码。
  4. Test cases 列举测试样例。

2. 五毒神掌(五遍刷题法,任何题目都至少刷5遍)

第1遍:(适合初次练习)
  1. 5分钟:读题+思考(如果基础薄弱,可以给自己10分钟到15分钟时间)。
  • 如果在思考时间内没有任何思路,不知道怎么做的话也很正常。
  1. 直接看解法
  • 适用于上一点中没有任何思路的情况下,有思路的话直接Coding就行了。
  • 同时注意比较多解法,比较解法优劣。
  • 算法的本身是要理解、运用的,而不是自己发明创造
  1. 背诵、默写好的解法。
  • 背诵和默写很重要,在背诵和默写的基础上,可以慢慢做到理解。

第2遍:(在第1遍的基础之上,这时候没必要看他人的解法了)
  • 马上自己写 – > leetcode上提交,不断Debug修改
  • 多种解法比较、体会–>优化。比较不同解法的时间、内存消耗。
  • 对于执行时间长的Code,多想优化策略。
  • 直到所有不同解法都是优的(领先90%以上,80%也不错)。

第3遍:(在第2遍的基础之上,过了24小时之后,做前一天做过的题目)
  • 对于不同解法熟练程度不一样,针对性的对自己不是特别熟的题目进行专项练习。

第4遍:(第3遍过了一周之后,反复回来练习相同的题目,同时对于不熟练的题目进行专项练习) 完成了第4遍,基本上对于相关知识点掌握的比较牢固了

第5遍 :(针对面试,面试前一个星期、两个星期进行恢复性训练。)
  • 将之前做过的题目再做一遍
  • 时间视面试准备程度而定,按照自己的时间计划安排

预期达到的效果:看到一道算法题,马上就能产生【肌肉式记忆】,并马上能得到相关的系列解法(解法1、解法2、解法3…,同时清楚知道所有解法的优劣程度)

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值