how
刷题方法论
首先需要明确一件事情:
算法不是拼智商和天赋,算法是一种可以通过科学合理的方式训练出来的能力
我们需要的是循序渐进,不能太过于急功近利,并且需要持续的坚持和复习
这并不容易,甚至可以说非常难
其实一切都是为了提升熟练度,无论是算法还是八股,面试也是应试,不是吗
这应当是你人生前十八年最擅长的东西了
既然面试需要的抗压和应变能力自己都有,天赋就在于跟人打交道的话,时间自然就要多放在真正决定性的技术能力上
如何确定自己是否有熟练度
最自然的想法是根据题目的难度来,如果熟练度高的话,简单题可能几分钟一道,中等题十几二十分钟一道,难题二十几三十分钟一道
但熟练度这个话题其实本身就挺泛挺大的,我们没有太大必要去细究或用指标去量化,只需要知道熟练度是一种感觉,如果你熟练度到位了,自信也会油然而生
具体的方法
转码这么久,看到最多最多的说法除了循序渐进以外,就是要分类刷
能力一般时:
-
按照不同的数据结构和算法类型来持续地刷某个同类型的题目
-
持续性地刷题和复习
能力比较强时:
- 打散来刷,锻炼思维的灵活性和应变能力
在真正写题时,要按照下面三步走:
- 看懂题目,先弄清楚题目需要我们做什么,五分钟内如果看不懂就跳
- 分析推导题目的解法,思考在逻辑上这道题目要怎么解
- 将思路转换为具体的代码实现
分成这三步最主要的目的就是要降低我们在写题时的心智负担,说通俗一点就是减轻自己的压力,让大脑不要多线程同时运转
我的学习路线
我目前是刷过了一遍代码随想录,感觉它确实很适合用来入门,就是学习一些常见的数据结构和算法思想
然后还刷了大概十几道的 hot100 吧,跟代码随想录一样都是断断续续刷的
其实我刷题最大的问题就是不愿意多复习,当时看懂题解会就会了,重复的次数却不够
现在仔细想想,好像学会一样东西最简单粗暴的方式就是多重复,无论多难
所以为了应对接下来笔面试的算法题,我准备安排每天的算法学习如下:
-
刷自己曾经刷过的题:10 道
-
刷新题:5 道
希望这能成为我的 daily routine,直到我成功找到自己的第一份大厂实习
另外的话,每三天反思总结复盘一次自己这三天学了什么,有哪些注意事项,基本的方法什么的,以及每刷完一个大的模块就总结一次
写在最后
一定要坚持啊啊啊,算法题是每个想找互联网技术岗的人不得不跨越的一座大山,持之以恒