大家好,我是鲏。学编程的朋友们都知道,算法和数据结构实在是太重要了!无论你是考研、还是求职笔试、面试,基本都会考察算法。
但算法的学习并不容易,很多小伙伴私信我,表示被算法折磨得非常头疼。
我选了几个比较有代表性的问题,给大家分享:
1)初学算法,没有系统的学习路线和刷题顺序,担心自学效率太低:
2)缺乏学习算法的动力,难以坚持:
3)刷算法题目时总遇到问题,看题解也看不懂,需要人答疑:
4)刷过的算法题不会总结,下次遇到了还是不会做:
有没有感同身受的朋友呢?
其实遇到上面的问题都是非常正常的,因为学算法本身就是需要一定的编程能力和逻辑思维,而且本来就需要长期坚持学习。所以大家不用担心,而是需要通过一定的方法和技巧来帮助自己学习,下面给大家分享几个我学习算法的小窍门。
在正式学习之前,从上帝视角整体了解算法和数据结构要学习的知识点、以及学习顺序,而不是随缘学习。
这里给大家分享一张鱼皮自己整理的数据结构和算法学习大纲,对于准备求职面试的同学来说,学习下面这些算法就足够了:
至于具体的刷题顺序,网上有很多不同的建议,最直接的就是按照知识点标签,从【简单的】题目刷起,从【通过率高】的题目刷起!
的确,学算法是枯燥的,想长期坚持非常难,像鱼皮当时刷了 1000 多道不同平台的题目,现在回过头来都觉得不可思议。
分析下我能够坚持刷这么多题的原因,主要是因为养成了自己的刷题习惯,把刷算法当成了像刷牙洗脸一样的日常任务。
怎么养成自己的刷题习惯呢?
1)每天在固定的时间学习算法。比如我当时每天早上 6 点多就会躺在床上思考没解决的算法题,想到方案后就会拿个枕头靠在床上敲代码做题,其实都有点魔怔了哈哈。
2)给自己定每日的学习目标。比如我每天会花 1 个半小时左右完成 3 道题目,不多也不少。如果没做完,就等其他工作完成后再静下心来思考;如果超前达到目标,那么可以奖励自己一顿番茄炒蛋。
3)分享自己的学习记录。比如我当时每刷几十道题目,就会跟朋友小小 “炫耀” 一下,看着自己的打卡表越来越满,也会有不小的成就感。
如果一个人学算法觉得很累,那么就一定要找到能伴你共同前行的伙伴,或者给你指路的灯塔。
可能是和你一起努力刷题的伙伴,可能是一个算法交流圈子,可能是一位专业的算法导师。
说不定一个问题你自己思考 30 分钟还没办法解决,而请教他人 5 分钟就能解决了,能大大节约你的时间。
至于一些三天打鱼两天晒网、动不动就摆烂的人,还是敬而远之。
解决学算法学了就忘的最好方法,就是多记录总结,把知识沉淀成电子文档,而不是全部装在大脑里。
不要觉得写总结很麻烦,记录自己的解题思路、或者在代码上补充详细的注释都是可以的。如果你连自己的思路都表述不清楚,那么说明这道题你就没有理解!打回去重做!
可以通过云文档、GitHub 仓库、或者各平台的发帖来总结分享自己的题解和心得,费曼学习法,能够给别人讲清楚题目的做法,你自己的印象就会更深刻。
这样做了之后,哪怕刷了算法就忘,也能快速通过自己的笔记总结捡起来当时的思路,大幅提高复习效率。