目前找工作竞争越来越大,很多大的公司都算法要求都挺高,所以我们在学习的过程中应当重视算法。本人用了一段时间的牛客题霸,感觉对自己算法的提升很大,现在对我前段时间的刷题做个总结。

一、刷题平台

         首先,介绍一下我刷题的平台,牛客网--牛客题霸https://www.nowcoder.com/ta/job-code-high。
我之前也用过很多刷题平台,但是自从我知道牛客题霸后,就没有用过其他的平台了,这是为什么呢?首先牛客题霸上的题都是免费的,免费的,免费的,你不需要花钱开通任何会员。牛客网将真实面试中常考的题都列出来了,并且按照知识点、难度、考过的企业、考过的职位、考察次数都分好类了,我们可以按照知识点刷,可以按照难度的简易程度来刷。并且牛客每周还会总结上周考过的算法题,我们可以从这里大致把握一下出题的趋势,看看企业最爱考什么类型的算法题。
      牛客网还根据不同的职位将这些题分成了研发最爱考、算法最爱考、客户端最爱。我们可以根据自己求职的职位来选择自己刷的题,提高刷题的效率。并且在每道题的讨论区里找到优质的解答,也可以将自己的解答分享到讨论区供别人参考。
图片说明

如果算法基础薄弱的,也可以先看看牛客上的算法教程,再来刷牛客题霸,这里给大家推荐一下。
牛客算法基础入门班: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


二、刷题方法

       对于刷题这块,我之前也走过一段时间弯路。之前刷题时,就按照从前往后刷,也没做什么笔记,刷完的题也就是当时会做,过几天再做时又不会做了,我相信这也是很多人遇到过的问题。
      之后和一些刷题的大佬交流后,获益匪浅。现在刷题是按照知识点来刷,牛客题霸上刚才也介绍了可以按照知识点分类来刷。刷一个知识点的题前先把这个知识点复习一遍,然后连续刷几道这个知识点的题,确保真的把这个知识点搞懂了。
      在拿到一个题时,先思考5~10分钟,如果自己有思路就先按照自己的思路写,如果没思路就再看看讨论区的大佬的题解吧,讨论区里可能不同的人有不同的解法,我们尽可能掌握每题的多种解法,并且尽量是最优解(在面试过程中,面试官可能让你用不同的方法来解题)。
      在刷题过程中,做好笔记,写好注释,确保下次再看到这道题时可以马上搞明白,不必再花过多的时间。一次不要刷过多的题,一般刷个3个题就要总结下。然后第二天再把前一天刷过的题刷一遍。隔一个星期再把前一个星期 的题拿出来看看,做到温故知新。
图片说明

三、刷题技巧

这里说一下我在刷题过程中总结出的技巧。
链表
对于链表的题,一般会用到指针(双指针、快慢指针)、伪头节点等。
例如:牛客题霸NC78反转链表中用指针保存节点的前驱和后继、
牛客题霸NC4判断链表中是否有环中用的是快慢指针。
牛客题霸NC33合并有序链表中用的伪头节点。

二叉树
对于二叉树相关的题,一般会用递归,还一般借助队列、链表等。
例如:牛客题霸NC45实现二叉树的先序、中序和后序遍历就用到了递归。
牛客题霸NC15求二叉树的层序遍历中就用到了队列和链表。
牛客题霸NC72求二叉树的镜像中用到了递归。

数组
对于数组相关的题,一般会用到二分法或HashMap
例如:牛客题霸NC105二分查找中就要用二分法解题。
牛客题霸NC71旋转数组的最小数字中也用到了二分法。
牛客题霸NC61两数之和中就用到了HashMap

字符串
对于字符串相关的题,一般会用到栈、双指针
例如:牛客题霸NC103反转字符串中既可以用栈解决也可以用双指针来解决。
牛客题霸NC52括号序列中就用到了栈
。。。。。。

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