相信看完上述的文章後,大家對於Leetcode這個網站的用意及介面能更為熟悉。以下,我將分享我是如何刷題的?以及如何刷題才能提升效率?
首先,如果你對於Data Structure以及Algorithm不熟悉,我強烈建議可以到Coursera或是Udemy上面先聽課,或者是查詢UCLA CS32課程,把他們的講義順過一遍。(P.S. UCLA CS32的課程是以C++為主體,非本科者不推薦)
刷題的過程中,我個人認為最忌諱的就是使用Pick One這個功能,除非你對於所有資料結構與題型都很熟悉,不然隨機的挑選題目來訓練,並沒有太大用意。因為你沒有「對症下藥」。
何謂「對症下藥」?~
1. 刷題最重要的事情是要先知道自己對於哪個主題的題目不太熟悉,需要多加練習。在學習資料結構與演算法的過程中,你一定會碰到你不熟悉的主題,或是比較不那麼融會貫通的演算法。此時你要做的事情是把他列出來,把最不熟悉的東西放在第一順位,排序好後接著進行下一步。
2. 找到不熟悉的主題後,以這個主題作為搜尋的關鍵字,找出所有與他有關的題目。以我自己為例,我自己對於dynamic programming很不熟,把dynamic programming作為query搜尋後,會得到如下圖得結果。
這個時候,我會選擇將這些題目依照Difficulty進行排序,然後從簡單的且答對率高的題目開始練習。把同個主題的題目先練習到一定的熟度,抓到這些題目的中心思想及核心後,在練習Medium難度以上的題目。這樣的練習方法,不僅能先確立你自己的基本觀念,更可以使你練習較難的題目時,挫折感比較不會那麼大。
3. 練習完一道題目後,你提交成功後的畫面中,最重要的其實不只是Accepted,你往往會看到Leetcode系統推薦你其他的題目。這些題目都是與你當前寫的題目有一定相關性或是相似度的,這時候我會點進去,把這些類似的題型也進行練習,確保我對於某個主題的題目是否有了解及融會貫通。
P.S. 謝謝您用心看完文章,如果喜歡我的內容,請點個拍手或留言吧~也順手按下follow鍵,隨時追蹤新文章。歡迎不吝賜教~
補充:本頁面會不定時的更新文章。(2021/03/11 Updated)