less than 1 minute read

开个新坑,LeetCode。

第一次刷题应该是2020年年初,我还没有认识到我的失败的时候(接下来的那个Spring是我漫长失败的开始,暂且不表)。当时就是做着玩的,刷了大概50题TOP 100。感觉好难,题解和黑魔法一样(其实就是因为数据结构和算法啥都没学过)。当时还认真地记录下来我的解法,然而过了一个月全忘光了。

第二次刷题就快进到今年暑假开头那会儿。功利性比较大,因为要准备突如其来的阿里面试所以花了一个礼拜突击剑指Offer。后来证明突击也没卵用。

今天,10月1日国庆节,a good day to start doing something. 所以老八我再次挑战一把… LC。

总结之前的教训:

刷得太杂,深度不够。 走马观花下来啥都记不住。

死磕。 一个是死磕难题,怎么写都写不对还嗯写。还有一个是自己想的垃圾解法还要写下来,反向训练了属于是。

这次我列出了个人认为比较适合自己的计划:

按照数据结构,逐个攻破。 初步按照数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构这个顺序来刷,打好基础。hard题咱先放一边哈。

刷题过程。 先自己想5-10min,包括要用的数据结构和用到的算法。如果觉得自己的想法可能是最优解就开始写,不然马上看题解。看懂之后马上自己写,力求AC。

刷题之后。 建几个收藏夹。秒想秒过的不需要收藏。“多想一下”文件夹指的是主要思路是对的,但细节比较tricky。“注意细节”文件夹指的是边界条件等等非受迫性失误的情况。“想不出来”文件夹指的是完全没有思路。

语言问题。 用过C++和Java刷题,但是我懒。所以Python。

在基础打好之后,接下来可以:

做hard题。

参加周赛。

想看自己有没有天赋,边学边做三个月leetcode,参加周赛,只做出来一道就是没天赋,靠非常人的努力填补还能有点希望;能做出来两道就是有希望;一道做不出来劝退劝退劝退。

— 知乎用户

彳亍。希望到时候能做出两道。