刷完700多題後的首次總結:LeetCode應該怎麼刷?

我是大二的時候開始接觸LeetCode的,那時候lc只有400題,我本來打算每天做一個題,但是由於當時覺得題目太難沒堅持下去。在大四考研後和研一研二的兩年左右的時間,我刷了700多道題。那麼我是怎麼做到的呢?

在這裏插入圖片描述

我打算分爲兩個部分來講:入門篇、提高篇。

一、入門篇

剛開刷lc時遇到二叉樹翻轉題目,想了一天也沒明白,當時無比痛苦。因爲我的方法不對,我總想着自己在腦子裏面想明白再寫,還想着用本地IDE寫個二叉樹結構進行debug,現在看來都是走了彎路。

對於新人而言,不應該自己硬扣一個題目,如果想了一會沒有任何思路,就應該果斷看別人怎麼寫的。在理解了別人的做法之後,再憑理解和記憶在LeetCode的代碼框裏敲一遍。

就像每個課本都會有例題一樣,只學純知識大家都不知道怎麼運用的。而我們在刷LeetCode的時候並沒有例題可以給我們學習,因此新手會感到痛苦。新手不要害怕看別人的解法和答案,度過痛苦時期,後面就會越刷越快。

新手應該注重三個方面:基礎知識、跟別人學習、做好筆記 。

1. 基礎知識

需要掌握常用的數據結構和算法的思想和適用場景。

我推薦《算法第4版》,看這個書的時候不用全部看,只看重點,比如前面的Java知識不用看,數學推導不用看。再推薦一本侯捷的《STL源碼剖析》,這本書對理解C++ STL有重大幫助,看了之後絕對會對數據結構和算法有更深的理解,我看完這本書之後感覺相見恨晚啊。

2. 跟別人學習

向別人學習是非常必要的。

又分爲兩種:

1)看別人的題解

主要看別人在解決這個題目的思路是什麼。

推薦的題解作者有:

花花醬:基本每個題都有博客和視頻,強烈推薦看他的視頻。
負雪明燭:把重點放在分析上,每篇質量都很高。
Grandyang:通過舉例子來讓你明白該怎麼做。
李威威甜姨柳婼書影博客

題解區的答案:英文版看lee215,中文版看liweiwei和sweetie,以及官方解答。

如果你會做這個題目,我也覺得應該看下別人怎麼解決的,思路是不是一樣。

比如想看負雪明燭的two sum題解,那麼搜索方式就是加上fuxuemingzhu在後面搜:

搜題解

2)看別人的總結

這部分包括算法講解、套路整理、刷題模板等。

負雪明燭說:”做題 = 想法 + 模板“,想法需要通過看別人的解答以及講解獲得,模板就是做題的套路和模板,既可以自己總結,也可以看別人總結好的。

首先是labuladong的算法小抄,在Github上兩週就獲得了 10k star!!!強烈推薦,特別是動態規劃不懂的,可以看。

然後有負雪明燭的【LeetCode】代碼模板,刷題必會,基本總結了所有的做題模板。

3. 做好筆記

在很多年前我就開始把每個做過的題目記錄在CSDN上,現在我的博客瀏覽量已經將近100萬了。

負雪明燭的博客
我的做法是:任何題,無論難度,我都進行記錄題目、想法、代碼。雖然經常寫博客的時間比寫題的時間還多,但是把自己的想法講解一遍纔是真的懂了,更方便了自己之後看、以及大家交流。

當然,除了寫題解,還要整理做題的方法、套路、模板,這些會隨着你的經驗慢慢形成的。

在B站有個小姐姐演示瞭如何用iPad做筆記,也講了小白如何上手LeetCode,值得一看。

程序媛分享 | LeetCode小白如何上手刷題?iPad學習方法 | 刷題清單 | 新手指南 | 刷題找工作 | IT類

4. 交流和監督

刷題最大的障礙是自己。特別是新手,很可能由於剛接觸LeetCode感覺太難就沒有毅力堅持下去,導致半途而廢。而且,刷題更重要的是堅持,做題的感覺都需要手感進行保持的。

所以,如果能有個組織交流和監督就好了。

我組織了”每日一題交流羣“的活動,並且做了個網站http://140.143.79.116/#/check來監督大家打卡。羣的規則是每天發題和打卡,如果一週沒有參加的話就會被踢出羣(如果有更好的監督方式請告訴我)。

在這裏插入圖片描述

事實證明這種大家一起做同一道題目,並且一起交流討論的氛圍非常好。更多規則可以看下面的文章,我的聯繫方式在網站的首頁。

負雪明燭:助力每日一題!每日一題打卡網站上線!

二、提高篇

如果你已經過了小白的階段,那麼應該做些提高項目。

1. 周賽

所謂周賽,就是每週日上午,LeetCode組織的一場比賽,總共4道題,一般是Easy一道,Medium兩道,Hard一道。中英文網站同時開始,題目相同。

做周賽的目的是檢驗我們的學習成果,畢竟這些題目都是新的,就像考試一樣。

不要擔心自己做不出來,只要盡力而爲就好了,我一般的目標是解決前三道,第4道Hard做不出來也沒有心理負擔。

參加完比賽之後,看下別人的解答,因爲都是自己苦思冥想過的方法,因此可以提高地特別快。

我最好的周賽成績是全球28名,當時非常興奮,開心了一整天。

2. 總結與分享

這一點和入門篇的做好筆記 略有重複,但是仍然要說,因爲如果只是單純的記錄筆記和寫每個題目的記錄是不夠的。

我在寫博客的時候就落入了只記錄不總結的誤區中,單個題目的解決方案只會有正在做這個題的人看,但是你的提煉總結可以讓你和大家都獲得成長,這也是我寫這個回答的原因。

上文中提到的labuladong的算法小抄就是個很好的總結與分享例子。

最後,希望大家都能夠通過刷LeetCode獲得成長,拿到自己滿意的Offer。

期待你的點贊、關注、分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章