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

 

你們好,我是負雪明燭。今天跟你們聊一聊「LeetCode應該怎麼刷?」這個話題。git

我是大二的時候開始接觸 LeetCode 的,那時候 LeetCode 只有 400 題,我原本打算天天作 1 個題,可是因爲當時以爲題目太難沒堅持下去。在大四考研後和研一研二的兩年左右的時間,我刷了 700 多道題(如今已經800多),而且大多數題目作了 2~3 遍。那麼我是怎麼作到的呢?github

在這裏插入圖片描述

1、入門篇

1. 刷題姿式

剛開刷 LeetCode 時遇到二叉樹翻轉,想了一天也沒明白,當時無比痛苦。由於個人方法不對,我總想着在腦子裏面想明白再寫,在白紙上不停地模擬二叉樹樹翻轉的每一步,還想着用本地 IDE 寫個二叉樹結構進行Debug,如今看來都是走了彎路。面試

大部分新手應該是隻學過課本上的一些數據結構和算法的知識,尚未實際刷題經驗,所以很是痛苦。算法

對於新人而言,不該該本身死摳一個題目,若是想了一會沒有任何思路,就應該果斷看別人怎麼寫的。在理解了別人的作法以後,再憑理解和記憶在 LeetCode 的代碼框裏敲一遍。數據結構

學習 = 學 + 習。知識是學出來的,不是在本身腦子裏蹦出來的;學過以後,還要本身動手練習。新手要勇敢地、常常地學習別人的解法和答案,而後憑理解敲代碼練習。只要度過刷題初期的痛苦,後面就會越刷越快。數據結構和算法

2. 基礎知識

須要掌握經常使用的數據結構和算法的思想和適用場景。ide

學習基礎知識,我推薦 《算法(第4版)》。這個書不用所有細看,能夠只看重點,好比前面的 Java 知識不用看,數學推導部分能夠不用看。學習

在這裏插入圖片描述

再推薦一本侯捷的 《STL源碼剖析》,這本書對理解C++ STL有重大幫助,看了以後絕對會對數據結構和算法有更深的理解,我看完這本書以後感受相見恨晚啊。網站

在這裏插入圖片描述

3. 刷題順序

合理的刷題順序能下降難度,幫助咱們在有限的時間裏得到最快的成長。搜索引擎

LeetCode 如今將近 2000 道題,基本沒有人可以所有刷完,並且對於參加面試者來講也沒有必要刷特別多的題。許多人在面試前刷了 200 道題,基本夠了;準備更充分的人,大概會刷 400 道題;能刷 600 道題目以上的,基本上國內公司的 Offer 都能收穫到一大堆。

我推薦的刷題順序的規則是:

  • 按分類刷;每一個分類從 Easy 到 Medium 順序刷;
  • 優先刷 樹、鏈表、二分查找、DFS、BFS 等面試常考類型;
  • 優先刷題號靠前的題目;
  • 優先刷點贊較多的題目;

若是基本上能作到 Easy 題 100% 能作對,Medium 題通過思考或與面試官交流後能作對,基本就能拿到 Offer。在實際面試過程當中,不多出 Hard 題,視能力刷。

4. 跟別人學習

向別人學習是很是必要的。

1)看別人的題解

主要看別人在解決這個題目的思路是什麼。不管這個題你會不會,都要看下別人的解法,或許有新收穫。

推薦的博客做者有:

  • 負雪明燭:5 年在 CSDN 上更新了 800多道題解,收穫 160萬 閱讀。在中文力扣日更題解。
  • 李威威:中文力扣的大 V,對力扣題目掌握很全面,寫得題解很是詳細,對題目觸類旁通。
  • 花花醬:基本每一個題都有博客和視頻,強烈推薦看他的視頻。
  • Grandyang:在博客園更新了幾乎全部力扣題目,收穫了 1200萬 閱讀。

最近我在刷中文版的力扣,題解區的答案質量很是高。比較推薦的博主有:力扣官方題解,負雪明燭,李威威,zerotrac,Krahets,笨豬爆破組,甜姨

我恬不知恥地推薦一下本身(負雪明燭)的題解,我最近已經連續在中文力扣日更「每日一題」題解 20 天。最近利用動圖幫助你們理清作題思路,點贊和閱讀數都比較高。

在這裏插入圖片描述

除了題解區之外,若是想看博客上面的題解,能夠用搜索引擎搜題目和博主名。想看負雪明燭的「two sum」題解,那麼搜索方式就是在關鍵詞以後加上「fuxuemingzhu」:

在這裏插入圖片描述

2)看別人的總結

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

「算法題 = 思路 + 模板」,思路須要經過看別人的解答以及講解得到,模板就是作題的套路,既能夠本身總結,也能夠看別人總結好的。

好比負雪明燭的【LeetCode】代碼模板,刷題必會

也好比說 AlgoWiki

在這裏插入圖片描述

固然推薦每一個人在作題的過程當中都整理一份本身的總結,用本身的方式總結好知識點和模板。

5. 作好筆記

寫做過程能更好地幫助咱們理清思路,也能幫助咱們再作此題時快速想起之前的作法,還能見證咱們本身的成長。

在五六年前我剛開始刷題時,就把每一個作過的題目記錄在CSDN上,如今個人博客瀏覽量已經將近 161萬 了。

在這裏插入圖片描述

任何題,不管難度,我都記錄題目、想法、代碼。雖然常常寫博客的時間比寫題的時間還多,可是把本身的想法講解一遍纔是真的懂了,更方便了本身以後看、以及你們交流。常常看到本身幾年前寫的愚蠢代碼,而後感嘆本身確實有進步了。

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

 

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

 

6. 交流和監督

刷題最大的障礙是本身。特別是新手,極可能因爲剛接觸 LeetCode 感受太難就沒有毅力堅持下去,致使半途而廢。並且,刷題更重要的是堅持,作題的感受都須要手感進行保持的。

因此,若是能有個組織交流和監督就行了。

我組織了「每日一題交流羣」的活動,而且作了個網站 https://ojeveryday.com 來監督你們打卡。在網站上提交力扣我的主頁就能進羣,羣裏的規則是天天同步力扣的每日一題,而後你們交流作法。羣裏還會組織模擬面試、週末直播講題等活動。因爲進羣前須要提交本身的 LeetCode 我的主頁,而且羣主管理嚴格,因此羣裏沒有任何廣告。刷題羣已經持續將近一年,歡迎你們加入。
在這裏插入圖片描述

事實證實這種你們一塊兒作同一道題目,而且一塊兒交流討論的氛圍很是好。

2、提升篇

若是你已通過了小白的階段,那麼應該作些提升項目。

1. 周賽

所謂周賽,就是每週日上午,LeetCode 組織的一場比賽,總共 4 道題,通常是 Easy 一道,Medium 兩道,Hard 一道。中英文網站同時開始,題目相同。每隔一個週六晚上有雙週賽,題目和周賽相似。往屆競賽也能夠點擊參加作練習模擬。

在這裏插入圖片描述

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

不要擔憂本身作不出來,只要盡力而爲就行了,我通常的目標是解決前三道,第 4 道 Hard 作不出來也沒有心理負擔。

參加完比賽以後,看下別人的解答,由於這幾個題目都是本身苦思冥想過的,所以學習和進步地都挺快。

我最好的一次周賽成績是全球 28 名,當看到本身的 id 顯示在了全球排名的第一頁,我很是興奮,開心了一成天。

2. 模擬面試

對於大多數人來講,刷題的目的是找工做,那最終就要參加面試。一我的作題的過程是缺少交流的,實際面試中會有交流互動。所以,推薦在面試前參加一下模擬面試。

另外,哪怕不參加模擬面試,給別人講一下作題的思路和代碼的實現過程也是大有裨益的。

須要參加模擬面試的也能夠進「每日一題交流羣」,我邀請了力扣全站排名第一的 storm 來作模擬面試官。

3、最後

上文總結了我想到的「LeetCode應該怎麼刷?」的方法,最重要的仍是堅持二字。作時間的朋友,努力付出就必定有收穫。若是以爲刷題困難,就多多學習,多多交流,不要半途而廢。

最後,但願你們都可以經過刷 LeetCode 得到成長,拿到本身滿意的 Offer。

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

歡迎加入刷題羣

目前已經近 2000 人加入了每日一題打卡羣。加入方式是經過每日一題打卡網站,該網站天天都會同步力扣每日一題,這是個互相幫助、互相監督的算法題打卡網站,其地址是 https://www.ojeveryday.com/
在這裏插入圖片描述

想加入千人刷題羣的朋友,能夠打開上面的連接地址,而後在左側點擊「加入組織」,提交力扣我的主頁,便可進入刷題羣。期待你早日加入。

關於做者

我是本文的做者是負雪明燭,畢業於北京郵電大學,目前就任於阿里巴巴。堅持刷算法題 5 年,共計刷了 800 多道算法題。作過的每一個算法題都在 CSDN 上寫題解博客,得到好評無數,CSDN 的累計閱讀量已經 161萬 次!

2021 年 2 月 13 日 負雪明燭 更新於 北京。

相關文章
相關標籤/搜索