极客算法训练营学习笔记(一)

极客算法训练营学习笔记(一)

启山,出自“筚路蓝缕,以启山林”;立志做一名职业程序员,专注于编程之“道”与“术”;

数据结构的分类

数据结构按数据的维度可以分为一维数据、二维数据和特殊数据,其中:

  1. 一维数据包括:数组、链表以及在它们基础之上配合不同操作方式形成的栈、队列、双端队列,配合不同数据特点形成的集合、映射等;
  2. 二维数据包括:树、图以及配合各种约束条件形成的二叉树、 堆、并查集、字典树
  3. 特殊数据结构包括:布隆过滤器和LRU缓存等;

算法的核心

解题的核心方法有:

  1. if-else:逻辑转移;
  2. loop:循环处理;
  3. recursion:递归调用;

最后解题思路便是这些手段的综合运用;前两条可以视为构建函数体的手段——通过逻辑转移和循环形成函数;第三条则是对函数这一整体的使用方式;

刷题

职业训练

不论任何事情,达到职业级水平都不是一件容易的事情,光鲜、亮丽、荣耀的背后一定是有着对应的付出,也许是枯燥、单调、乏味,但是这一切对于真正喜欢它的人来说,都是另一种享受;

视频中提到《异类》这本书,指出职业训练的三个步骤:

  1. 切碎知识点;
  2. 刻意练习;
  3. 反馈;

其中,切碎知识点是指将所要掌握的内容进一步细分,针对每一小块进行刻意的练习,并在练习的过程中寻找反馈;

切碎知识点是为了聚焦;刻意练习是为了举一反三,触类旁通;反馈只为了进步;

反馈有主动反馈和被动反馈;主动反馈是自己寻找进步空间,主动寻求进步的机会;被动反馈则是他人以旁观者的角度指出可以改进的方法;

四步切题法

这是针对一次解题的方法和步骤,即:

  1. 彻底理解题意:输入、输出是什么?限制是什么?数据、场景有什么特殊的地方?
  2. 寻找所有可能的解题思路:这里需要注意的关键词是所有,而不仅仅是一种思路;
  3. 编码实现:方法实现细节的处理;
  4. 测试:有始有终,测试用例也能体现或者提示自己对边界、特殊情况的考虑;

五步刷题法

五步刷题法是系统刷题的方法,即:

  1. 第1刷:全力输入;能做便做,不能做便学习其解题方法;这里的目标是掌握某个问题,某种问题类型的尽可能多的解题思路,解题思路可以来源于自己的积累,也可以来源于外界,因为这里最终的目的是积累,是输入,而非输出,所以暂时没有解决思路是一件很正常的事情,没有必要死磕,进步和成长才最重要;
  2. 第2刷:全力输出;针对某道题,经过第1刷后,我们应该对其的理解有进一步的加深,对其解决思路应该熟练掌握至少一种解决思路,第2刷的目的就是实现这些思路,争取对方法细节、题目本质有进一步加深;第1刷是输入,是学习外界的知识;第2刷是输出,是消化学习到的知识,是把外界的知识内化为自己的经验;是查漏补缺;
  3. 第3刷:隔天巩固,加深记忆的同时检验对知识的掌握程度;
  4. 第4刷:隔周复习,温故知新;对抗遗忘曲线;
  5. 第5刷:根据需要,如面试、笔试,提前一周进行复习梳理,唤醒知识;

刷题误区

切忌只刷一遍!切忌只刷一遍!切忌只刷一遍!

对于学习者来说,刷题的目的是学习,是积累,总体来看,仍然是一个输入的过程,而不是一个输出的过程;

只刷一遍,我认为是输出阶段的方法,更像是功夫大成后的出山历练;学习阶段只刷一遍,一来太容易忽略问题背后的精髓,对解决未来可能遇到的问题没有帮助,换言之没有积累或者积累很少;二来很容易忘记,尤其是通过“死磕”解决问题,很多细节当时可以通过不断debug来完善,但是没有巩固复习,下次遇到同样类型的题目,因为没有梳理总结、消化吸收的过程,所以没有经验可以调用,无法透过题目描述的表象看到背后的本质,很难取得AC的结果;

当然,这是学习积累阶段,学习的最终目的还是“只刷一遍”,此时因为积累的经验和知识足够多,水平足够高,使得可以保证无论什么时候遇到这类问题,都能保证不掉链子,此时对这类问题就没有必要再采用“五步刷题法”了。

学习心得

万事皆有法;得其法,事半功倍;不得其法,事倍功半;自己在刷题方面走了不少弯路,现在算是“迷途知返,亡羊补牢”;虽然秋招都已经尘埃落定,现在才开始刷题,似乎“有些晚了”,于我而言并非这样;

现在在战略方面,我有着更为清晰和单纯的目标,在战术方面也正在学习,职业生涯才刚刚开始,“种一棵树最好的时机一是十年前,二是现在”;

真是“学习半小时,总结梳理两小时”,不过于己于人,这些都是值得的;

接下来,我要将自己的“算法训练”过程写成系列博客,希望能帮到更多人;

PS:关于学习视频,有能力请支持正版,暂时没有能力但是想学习的在校学生(限在校学生,其他勿扰),可以在csdn私聊我

启山,出自“筚路蓝缕,以启山林”;立志做一名职业程序员,专注于编程之“道”与“术”;

感谢你为阅读本博文付出的时间,如果本文对你有所帮助和启发,欢迎一键三连,谢谢你;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值