我与算法——记于leetcode写了100道题
本文记于2018.11.22,不过当时好久没搞博客了,最近处理了下笔记,依次发出来.
我可以简单说说我做这些题的过程和我理解的算法,还有一些我对初学者的建议。
过程
去年刚改行的时候,啥啥都不懂,看别人都说刷leetcode.上来直接做,根本就不会.后来我觉得不行.就直接去看《算法》了,《算法导论》虽然很经典但是不适合当时的情况。
看的另外一本书叫《大话数据结构》,这是朋友推荐的。当时我的理解是算法和数据结构是完全分割的两个部分,在我先后看了算法和数据结构之后,明白了到底哪个是哪个。实际上,算法是依托于数据结构的,单独的数据结构不会有太大意义,如何用这个结构才有意义。
去年直接看了下这些基础,就完了,面试的时候,还是很懵,懵懵懂懂那种吧,也不是特别会。因为当时断断续续做了十几道题。
今年三月份的时候面试头条,问了算法,没有给出简单题目最优解,被算法撸下去了,然后就没有后文了。所以我在入职新公司之后就立了个计划,决定好好解决下这个问题。
直到9月份了,计划开始。每天会经常花一点时间来做做题(摸鱼的飞起)。做一道学一道,多数题目都不会花太多时间,而且做多了就会了。在书本上知道最基础的算法之后,剩下的算法就是在原先的基础上扩展延伸。
一些建议
之前有人说,一天做一两道题,我觉得不行,这说明这个人根本就不会。一天能写七八道题是非常正常的水平,算不上大神,我现在就是这样吧。一天能写三四十个的,非easy那种题目,这是非常熟练的人,各种类型的东西了然于胸。
- 如果你一天只能做一两道题,不如从简单的算法书开始看,不要做题了——理由是这样的,如果直接从leetcode入门,里面会牵扯很多的乱七八糟的东西,你无法分辨哪个是哪个,会花时间走马观花到处看,而且涉及的东西难易程度不同,个人水平原因无法区分题目难易。没有条理也很难记忆。上来直接刷是很多人的误区。
- 没必要说单独去搞一本数据结构的书——单讲常用的数据结构,几个网页就够了,要想成为一本书必须要有算法相关的东西,书里需要告诉读者,这个结构怎么用,怎么好,怎么不好。
- 干,不要想,以为自己会的时候,不看答案写一遍就知道真假了。
我
我个人的感觉就是,基本算法思想有了之后,一道题即便没写出来,也会有点想法的,就像得了得了一半分数的数学题,如果没有基本思想,那就是0分了。
1个小时,边想边写。头绪不太清晰的就直接看答案了。看答案主要是了解思想,直到自己能够写出来。(这个过程时间比较长)
当然有很多题目就是几十分钟,很简单的。即便是medium hard。
背景
想了下还是把自己的背景简单说说吧,供大家参考。本人没有过任何竞赛背景,非计算机、软件、信息相关专业。半路出家转行(工作后改行,非大学),到目前为止干了不到2年。