how

·data-structure-and-algorithm
#problems-record

刷题方法论

首先需要明确一件事情:

算法不是拼智商和天赋,算法是一种可以通过科学合理的方式训练出来的能力

我们需要的是循序渐进,不能太过于急功近利,并且需要持续的坚持和复习

这并不容易,甚至可以说非常难

其实一切都是为了提升熟练度,无论是算法还是八股,面试也是应试,不是吗

这应当是你人生前十八年最擅长的东西了

既然面试需要的抗压和应变能力自己都有,天赋就在于跟人打交道的话,时间自然就要多放在真正决定性的技术能力上

如何确定自己是否有熟练度

最自然的想法是根据题目的难度来,如果熟练度高的话,简单题可能几分钟一道,中等题十几二十分钟一道,难题二十几三十分钟一道

但熟练度这个话题其实本身就挺泛挺大的,我们没有太大必要去细究或用指标去量化,只需要知道熟练度是一种感觉,如果你熟练度到位了,自信也会油然而生

具体的方法

转码这么久,看到最多最多的说法除了循序渐进以外,就是要分类刷

能力一般时:

  • 按照不同的数据结构和算法类型来持续地刷某个同类型的题目

  • 持续性地刷题和复习

能力比较强时:

  • 打散来刷,锻炼思维的灵活性和应变能力

在真正写题时,要按照下面三步走:

  1. 看懂题目,先弄清楚题目需要我们做什么,五分钟内如果看不懂就跳
  2. 分析推导题目的解法,思考在逻辑上这道题目要怎么解
  3. 将思路转换为具体的代码实现

分成这三步最主要的目的就是要降低我们在写题时的心智负担,说通俗一点就是减轻自己的压力,让大脑不要多线程同时运转

我的学习路线

我目前是刷过了一遍代码随想录,感觉它确实很适合用来入门,就是学习一些常见的数据结构和算法思想

然后还刷了大概十几道的 hot100 吧,跟代码随想录一样都是断断续续刷的

其实我刷题最大的问题就是不愿意多复习,当时看懂题解会就会了,重复的次数却不够

现在仔细想想,好像学会一样东西最简单粗暴的方式就是多重复,无论多难

所以为了应对接下来笔面试的算法题,我准备安排每天的算法学习如下:

  • 刷自己曾经刷过的题:10 道

  • 刷新题:5 道

希望这能成为我的 daily routine,直到我成功找到自己的第一份大厂实习

另外的话,每三天反思总结复盘一次自己这三天学了什么,有哪些注意事项,基本的方法什么的,以及每刷完一个大的模块就总结一次

写在最后

一定要坚持啊啊啊,算法题是每个想找互联网技术岗的人不得不跨越的一座大山,持之以恒