目前找工作竞争越来越大,很多大的公司都很重视应聘者的算法能力,所以掌握好算法尤为重要。
这里说一下我认为算法应该怎么刷。
1.打牢基本功
在刷算法的初级阶段,我们应该掌握好基础知识,包括常用的数据结构和算法。
数据结构:数组、栈、链表、图、散列表、队列、树、堆
常用的算法:贪心、分治、穷举、动态规划、回溯、递归、深度优先搜索、广度优先搜索。
在学习这些知识的时候,推荐结合着相关书本和视频看。学完一个知识点后结合着相关题进行练习,以熟练掌握这个知识点。这里推荐下牛客的算法视频课,这些课程从易到难,大家可以根据自己目前的水平自由选择。讲课的老师是大名鼎鼎的左程云老师,从2010年起专注刷题至今,拥有10年算法刷题经验。跟着学完这些课程,对你的算法能力绝对有很大的提升。
《算法基础入门班》:https://www.nowcoder.com/courses/cover/live/509
《算法基础提升班》:https://www.nowcoder.com/courses/cover/live/500
《算法笔面试真题精讲中级班》:https://www.nowcoder.com/courses/cover/live/503
《算法笔面试真题精讲高级班》:https://www.nowcoder.com/courses/cover/live/482
每学完一个知识点后,及时的找一些对应的题来练习,这里推荐
牛客题霸:https://www.nowcoder.com/ta/job-code-high
牛客题霸上将所有的算法题目都做了分类,我们可以手动选择自己想刷的题型。
图片说明
2.难度从易到难
刷题的时候,不要一上来就要刷很难的题,不重视简单的题,急于求成,认为只要把难题搞懂了,简单的题就不在话下,这种想法是不对的。刷法能力的提升不是一天两天就可以见到效果的,我们应该从简单的开始刷,循序渐进,由易到难,打牢自己的基本功。如果一上来就做特别难的题,花了很长时间都没有做出来,不仅打击了自己得信心时间也浪费了,还会对刷算法产生抵触心理。如果从简单得题开始刷,每做出一题就会有一丝丝成就感,这样刷题得效率提上去了,自己也会越来越喜欢刷题。如果刷简单得题都需要花很长的时间,建议再花一点时间把上面介绍的刷题的基本知识看看,磨刀不误砍柴工。当我们遇到不会刷的题时,如果已经花了很长时间,这时可以看看他人的题解,如果题解都看得很吃力的话,建议先把这题放一放,先刷其他的题,等到最后再来刷这些题。

3.按分类来刷题
在刷题的过程中,建议按分类来刷题,如在一段时间内只刷动态规划相关的题。这样可以集中精力对一个知识点反复练习,这样可以加深对这个知识点的理解,提高刷题的效率。这样当下次再刷到同类型的题时,可以很快的有思路。
当然,如果已经刷了很多算法题的同学,可以不按照分类的方式来刷,这样可以锻炼思维的灵活性。
图片说明
4.及时总结巩固
当我们刷完一道算法题时,一定要将解题思路、代码的注释写好,这样当我们下次再看到这道题时就可以很快的捡起这道题,不必再花大量的时间从头分析。另外,在刷题的时候,也不要一下子刷很多题,建议每刷完3~5道题就总结一下。然后第二天再将前一天刷过的题拿出来看看复习一下。过一个星期再将上个星期的题拿出来总结一下,不要刷完就忘了。还有一点,刷题是一个不断坚持的过程,重在一点一滴的积累,所以不要三天打鱼两天晒网。如果中间间隔一个多星期不刷的话,再刷起题来就会感到手生。
在总结题目这块,要将一些常用的方法套路总结出来。比如:见到一个排序数组的题就应该想到能不能用二分法来做、见到树相关题就要想到用递归要不要借助队列、见到一些链表的题要不要用双指针、要不要用伪头节点等。例如:牛客题霸NC78反转链表中用指针保存节点的前驱和后继、 牛客题霸NC4判断链表中是否有环中用的是快慢指针、牛客题霸NC33合并有序链表中用的伪头节点。
。。。。。。。
最后,再次强调刷算法是一个长期的系统的工程,不是一朝一夕就可以练成的,一定要坚持下去哦。

【注】:本人水平有限,以上只代表个人观点,如有错误,欢迎各位大佬批评指正。