稀有猿诉

十年磨一剑,历炼出锋芒,说话千百句,不如码二行。

LeetCode刷题计划

多说无益,还是要撸。从Hot100开始,这是比较基础的一套题目,非常适合入手。

在本地编码

浏览器编辑和调试代码毕竟还是不太方便,所以还需要在本地调试和编码,然后再到网站上面去提交。

创建一个新的module,为leetcode,然后同时创建测试代码。完整代码在这里

要先学习,再去解题

刷题是在练习,如果一道题,有思路,或者已经知道如何解决,那么可以去解题,力争一遍AC,并要优化代码细节。

但如果完全没有思路,或者除了蛮力法和常规方法外,想不到更好的方案,但其实有更好的方法,那这题做起来其实就没有多大意思了,因为在不借外力的情况下,想不出更好的方案。

所以,还是需要先去学习相关的知识,然后再去练习。比如先去看书,或者看LeetBook,学习到相关的知识以后,再去找类似的题目去解题。

对于书中(常规书籍或者LeetBook)的示例,重点是要看懂和理解,当然也要敲一遍运行一下,以完全理解思路和编码细节。但不应该花过多的时间,比如寻找更多解法等,这是没有必要的。因为一定可以找到与书中一样的题,或者至少有类似的题,解题时可以尝试不同的解法,比如蛮力法,改良法和书中建议的方法。这样效率更高,因为题中有更全的测试用例,也能更好的比较运行结果。最后 写题解进行总结。

但一定一定不能为了刷而刷,比如不经思考直接去看评论或者题解,这样是没有意义的。

每一道题要尝试多种解法

一定要自己思考,并尝试多种解法。从直观蛮力法开始,做好效率分析,争取每次提交都有提升。

实在没思路时,先看题目本身的提示,再看题解或者网上其他人的解法。然后写自己的解法,不要照抄。

发散思维是相当重要的,这无论是在面试中还是在实际工作中都是极其重要的,因为任何问题都不止一个解法。面试时更喜欢问,有没有其他解法,有没有更好的解法,所以尝试多种解法是相当有益的。

力争做到Beat 100%

重点是时间上,要力争做到beat 100%,至少要beat 90%。

空间不做特别要求,尽量不用额外空间,做到至少beat 50%吧。当然也没有必要为了优化而优化,比如针对LeetCode的测试特点进行优化,这是没有必要的。

做完后要写题解

把题目的分析,和各种解法写一写。

引申知识点的学习总结成文

对于题目中引申出来的知识点要进行学习并另外总结成文,放在博客之中。

博客之中归档

博客之中用一篇文章来记录所做的题目,对应的题解和完整代码。

Comments