談談刷題姿勢

Remember發表於2019-12-19

談談刷題姿勢

今天突然看到開了 Leetcode 刷題社群,心頭很是激動。我是今年開始刷題的,因為也是今年才看到支援用 php 刷題了,畢竟是目前我吃飯的語言。所以那時候就開始計劃 github 上建一個倉庫開始了刷題之路,我刷的不多,基本上每週也就三四題,偶爾多個一兩題。邊刷別做解題思路。記錄下來,方便後面檢視,先放張圖看看這半年 Leetcode 提交的記錄吧

談談刷題姿勢

談談步驟

其實我一開始傻乎乎的從第一道題開始刷,順序刷。如果你現在也是這樣的,請停止這樣的行為,毫無意義。理由有兩點。其一,中間的難度參差不齊,容易有挫敗感,打擊自信心,如果你還是一個完美主義者,那麼 GG。你可能會卡在一道題目上好幾天....。其二,題型千變萬化,可能這題是一個二叉樹的題型,下一題就是一個 DFS 類似這樣的。這樣的話,其實對於你來說,毫無意義,你甚至在後一天忘記了前一天刷的是哪一種型別的題目。正確的姿勢我覺得應該是根據下圖點選 tags,根據標籤去刷,先篩選標籤,然後再從標籤裡面的 easy 開始刷,easy 刷多了,再慢慢開始 Medium直到你是種子選手了,直接隨手 Hard

談談刷題姿勢

還有一點,畢竟大多數的人都不是 ACM 出生的,可能一開始對著 easy 的題目看半天,也不知道咋麼動手,不要覺得自己不行,很正常的,我一開始也是完全不會,這種東西都是後天刷題練出來的,畢竟天才總是少數,刻意練習,享受刷題的樂趣,才能達到信手拈來的地步。當然我承認學習能力的差距是非常大的,有些人善於總結,發現規律,能快速定位問題。自然刷題的境界會越來越高。這條路還很長。

談談總結

刷題的過程最好自己做記錄,題目並不是刷一遍就行了,相信我,開始的時候,過幾天,你再回頭看自己刷過的題目,你可能就會,不,是肯定會全忘了,你忘了思路,忘了解題步驟,所以,記錄是非常有必要的,後續最好過個半個月,重新回來看自己之前的記錄。先試著解,解不出來了,再看下之前的思路。還有一點非常重要,要善於總結,很重要。對於題解,我們不應該是背下來的,而是應該去理解類似題型的解題思路,藉助的思想。這道題用的是二分,這不就是一道動態規劃的題型嘛。類似這種,善於總結題型,因為只有你真正理解內在的思想,相似的題目你也就會解了。這個過程中,你會接觸到很多基礎的關於資料結構和演算法的。不懂的地方可以先補充一下知識,然後針對一塊知識點,開始刷題,加深印象,不僅刷到題了,還能掌握資料結構和演算法。它不香嗎?如果能達到看一道題目 就知道解題思路,知道哪種思路的解釋最優解,那就很厲害了。

談談後續

千萬不要滿足於一種解法。要明白 O(n2) 的執行時間和 O(n) 是不一樣的,同樣的空間上 O(n)O(1) 也是不一樣的。自己會解之後,開啟對應題目的 discuss 看看國內外大佬的思路。有時候沒文化的我可能會喊一句,臥槽,還能這麼解,多用用英文版的,畢竟一個面向全世界,一個面向國內。資源的大小不用我說了吧。

倉庫地址

我的php刷題總結都在這個倉庫,可以參考下:Leetcode-php

吳親庫裡

相關文章