【小白学算法】9.算法小白不再恐惧LeetCode刷题
最近业务比较繁忙,又补了上个Q遗留的自动化接口case等等杂事,晚上用来系统学算法的时间比较少了。
另外,在steam又新买了个《地平线4》,刚玩也有点停不下来,哈哈。
但是,最近也并不是啥也没干。都说学以致用,之前看视频看书了解了链表二叉树这些,但是具体能干啥、怎么用,
还是两眼一抹黑。不过所幸得到奇哥指点,分享给我另一个关于算法学习的公众号《labuladong》,这里面有很多
算法实战的要点,有兴趣的可以去搜索下。我跟着指导,觉得也得去刷刷题才是正道,毕竟学这玩意就是为了以后
面试用,还是得实战。
一、LeetCode三分钟劝退的回忆
说到LeetCode,这又勾起了我曾经痛苦的回忆了,或许这也不单单是我一个人有这样的经历。
记得我第一次打开LeetCode想去做题,应该也是跟风吧,那会听说牛批的大佬都去那上面做题,感觉应该挺厉害的样子。
然后,不明所以的我也想去试试,结果打开题目,一点思路都没有。
最后,好不容易碰到个那种循环遍历能解决的问题,解决完后一脑门子汗。结果看题解的时候,发现自己的算法贼差劲,
别人用哈希解决的效率更高。这倒好,又揭开新的知识盲区了。
接下来,再继续打开新题目,脑子都是一片空白,忍不住就想去看题解。题解最后看了就看了吧,理解起来还费半天劲,
最后的结果就是劝退了。
其实现在想想,那种情况下就去挑战算法题,劝退那是唯一结果。而且,还会进一步增加你对于算法题的恐惧感。而这
一切的来源,就是自己的无知,以及学习方法不对。
路都不会走,就想跑了呀?
二、算法学习与刷题,相辅相成
那现在的情况肯定是比之前要好了,尽管还是小白,但是比起之前的自己还是进步了的,至少现在不再那么恐惧LeetCode刷题了。
为什么呢?
人的恐惧通常来源于对事物的未知。之前根本不了解数据结构与算法,做题自然无从下手。现在通过一步步的学习数据结构,知道了
其实这些东西没有以前想象的那么神秘,玩来玩去,还是数据的增删改查呗。
在上面提到的算法公众号里,我学习到了刷题都是有套路的,有解题框架,万变不离其宗。笔者推荐从二叉树的题目刷起,培养这种套路的
感知。拿二叉树来说,基本上解题还是那三种遍历:前序、中序和后序。 拿到题目首先就是不慌,仔细审题,到底是要我干什么?我怎么
做能达到这样的效果,最后再确定选哪种遍历框架合适。
就这样,穿插着做了些简单的题目。毕竟还是个小白,得从easy模式开启,最主要的是培养好正确的解题思维,彻底消除对于LeetCode的
恐惧感。
后面的算法学习,我决定就这样理论+刷题相结合着来。先将数据结构的基本知识掌握,再去解决一些相关的算法题,效果会好很多。比如,
那个删除链表结点的题目,如果我不知道什么是链表,可能还真琢磨怎么像数组那样删掉这个结点呢。
三、关于看题解
关于看题解,我觉得可能会有那种强迫自己非得做出来之后才能看题解的人。其实我觉得没必要这样做,最起码对于小白阶段。
既然都是小白了,那做不出来也是非常正常的事情,这时候去看看题解,或许就可以让你茅塞顿开。这时候要去体会别人的解题思路,
以及对于此类问题的应用。那么,下次再碰到类似问题的时候,咱基本上就可以做出来了。
要不怎么是叫刷题呢?只要是用心做题,我相信量变一定可以产生质变。