写在前面的话:
大家好, 我是powcai,自己敲了1年LeetCode,想分享自己一点经验,让你们少走一点弯路!还有, 我不是大神, 只是喜欢敲LeetCode的小学生!
首先, 大多人说自己没有编程基础, LeetCode太费力!其实这个完全不用担心, 因为我就是零基础,在敲LeetCode甚至连一门编程语言都没学过(只会一点python)!什么BFS,DFS,动态规划。。。什么都不懂!LeetCode还是通过我找工作小伙伴知道的, 之后一发不可收拾。所以没有编程基础完全可以刷,但是要掌握一些方法(后面我会介绍)。
其次, 敲LeetCode没用, 还是找不到工作;能不能找到工作我不知道,但是我确确实实从中得到一些好处,把它用于生活中。
最后,还要人说LeetCode太难了, 自己太笨做不了。 天赋决定上限,努力决定下限。先努力做到目前你能做到的最好,然后再说不行。 要相信一万小时定律,傻子都能成为天才。我们先试一试->不行->再坚持一下->不行->再坚持一下->不行->放弃!做点其他想做的事,人生其实就是在不断的尝试,才能找到自己想走的路。开心才是最重要的,改变世界就是那几个人,大多数人渺小到可有可无,我们能做到就是让自己开心,让自己生活有意义!
好了, 下面介绍我敲LeetCode方法,大家可以借鉴。
我采取的方法
快刀斩乱码
慢工出细活
坚持
第一步, 快刀斩乱码
就是一个字快, 一开始刷的时候, 不知道有哪些算法?我们可以按照LeetCode标签每种类型做个几题。一开始不知道怎么做,没事!思考十分钟, 想不出来直接看别人代码, 把它的逻辑搞清楚。然后自己手敲一遍(不看他人代码, 自己想逻辑)。这个很关键!不去思考,看着别人代码敲, 只能练手速, 该不会还是不会!
我们迅速把各种题型过一遍,做到心里有数。
第二步, 慢工出细活
就是一个字**慢,**对于一个问题, 我们考虑它的各种解法,去总结, 发现其中规律 。
第三, 最重要坚持
我当时刷LeetCode,每天两题,一开始需要4,5个小时,随着你每天练习,时间慢慢变短,而且肉眼感受到自己的进步!很有成就感!人只所以坚持, 是他认为有意义, 把敲LeetCode赋予重大意义, 每个人都可以!
再写一点建议,
我们不是天才, 真的有些大神周赛 10分钟就敲出来了, 我认识一个大神(周赛前几名),他认为LeetCode都是水题,可能一辈子我也达到不了这种水平, 但是每天让自己大脑处于思考情况, 做事逻辑清楚,还有它给我带来内心平静,感觉世界很静,自己很舒服!其实就够了!
我们在敲的时候,养成一些好习惯。我们毕竟不是acmer, 不需要刻意追求速度, 养成见名知意变量命名习惯;养成写注释的习惯;养成估算自己算法时间复杂度,空间复杂度(我还要锻炼)习惯;。。。。别看这些一开始很难, 当你养成习惯了,以后都是无脑事情,一点也不累!
真的希望大家, 不是为了面试而找敲算法,而是培养自己喜欢思考的习惯!让自己一直处于进步状态!算法不仅仅只属于计算机,生活中处处都能看到, 你玩的拼图游戏(DFS)。。。都是算法.
其实还有很多, 想到再写!
谢谢大家, 让我们一起爱上算法, 爱上LeetCode。做快乐的事, 让自己更快乐!我发现真正牛逼的人, 不是有多努力,多拼搏,而是发自内心的喜欢!