算法攻关 - 指导篇
文章部分知识来自极客时间,部分来自 LeetCode,部分来自开源的 GitHub 面经。目的是形成一套免费的攻关手册,希望帮助到有需要的人。
一、理论
如果想要精通一个领域,需要三个步骤
切碎知识点
刻意练习
反馈
1.1、切碎知识点
对于整个结构的知识,往往是高内聚的,封闭原则非常好,那么你如何能够从很简单的东西,进行掌握内部原理或者深入理解以后提炼出自己的知识?这里需要做的就是切碎知识点,比如我们常听到的点动成线,线动成面,面动成体。那么我们想要了解这个体,则我们需要明确他有几个面,我们想要了解这个面则可以根据切分多少个线,我们想要了解线的话,则可以直接来切分成多个点。是不是这里你对于这个切碎有了一点理解。这里我为何也非常赞同这个说法,是因为最近发现工作中,我们的时间都是碎片化时间,那么如果我们不能去将碎片化的时间应对到碎片的知识点,那么我们往往没有那么多时间去做某个事情。这样的话,我们是不是经常需要用整片的时间去学习碎片化的知识。比如我现在看了一篇公众号,或者看了一个抖音视频。
PS:我们应该学习的就是如何将碎片化时间学习体系化知识,这就是精通领域的第一个要素,切碎知识点。
1.2、刻意练习
前几天有个问题,我媳妇问我为啥老卡在那一个算法题,我想了想告诉他我再思考如何能够提出一个更优解,而且这个解法是融合我的思考的。我告诉她我希望的是从这个题能够提炼出共性,以及能够将变形体在未来很容易的解决,所以我需要第一个稳扎稳打,第二个刻意练习这类问题。
那么什么时候我们需要刻意练习,我这里想说明的就是你觉得不会的内容,有缺陷的地方,或者不舒服的内容。就像一个木桶一样,我们不是需要将那个非常长的木板提高的特别高,而是尽可能匀称,这样我们会能够获得更多水。
1.3、反馈
反馈很重要,前几天跟领导聊完绩效,领导问“你有什么问题,想问的么?”,我拿出了之前记录的问题,问:从你自己来看,你认为什么样的员工好,什么样的领导好?
他给我的回答:持续成长,持续反馈,同时可以用在员工和领导身上。他认为反馈是对于每个人成长的必要条件,对于自己也是,如果领导不能给自己反馈,那么第一领导不是非常重视自己,第二你没法不断获得改变的建议,则容易偏离航道。
这里我想表达的是,反馈可以主动反馈,自己去寻找自己的缺陷是否弥补上,或者去与高手 PK。第二种是被动反馈,有 mentor 或者队友看着你,并给你反馈。无论哪种,都是需要你冷静对比反馈和自己分析以后进行下一步规划的重点。
二、准备
2.1、切碎知识点
将算法和数据结构进行切碎,我们可以看下如下图:按照数据结构与算法进行分了 2 类。
PS:此图借用极客时间课程的图,可能后期,我有了自己的思考和验证会进行调整。
2.2、算法刷题步骤
明确题意
考虑多个解题方式和多个解
- 比较获取最优解以及最优方案
边写边思考
用 case 验证
2.3、数据结构初识
参考原文章:【数据结构与算法】从0-1小白学习之路(入门篇)
2.4、数据结构复杂度分析
参考原文章:【数据结构与算法】从0-1小白学习之路(进阶篇)
下一篇开始算法攻关之旅。
版权声明: 本文为 InfoQ 作者【小诚信驿站】的原创文章。
原文链接:【http://xie.infoq.cn/article/060a3e46d3a3f0df1be6dec75】。文章转载请联系作者。
评论