
快速前往
很多人一提到 LeetCode,就會直覺聯想到「刷很多題」、「撐過面試」或「準備進大廠」。但如果把時間軸拉長來看,LeetCode 帶來的真正價值,遠不只是一張 offer,而是一種更高階的思考訓練。
這篇文章不是要列出「必刷 1000 題清單」,而是想分享一套更可持續、也更符合長期成長的刷題方法。
LeetCode 重點不在刷得多,而在「解題套路」
許多人會因為「刷得不夠多」而感到焦慮,但實際上,約 200~300 題就足以涵蓋大多數重要的模型與解題套路。如果只追求數量,很容易陷入疲勞、機械化與自我懷疑,反而讓學習失去效率。
比起問「刷多少題」,更重要的問題是:
這一題,我真正學到了什麼?
它背後代表的是哪一種模型?
是否可以套用到其他問題?
在實際解題時,可以用 divide and conquer 的角度去面對每一道題目——這裡所指的不只是演算法,而是一種思考方式:
- 問題是否可拆解為更小的子問題?
- 是否存在重複運算?是否能優化?
- 題目的本質,更接近哪一類經典模型?
當這些結構在腦中清晰呈現,寫程式只剩下最後一步。
除了解題訓練,LeetCode 更能邏輯訓練
另外非常重要的一點是:不是寫出答案就夠了。
真正的能力,體現在你能否說明「為什麼用這種方法」,以及是否理解「不同解法之間的 trade off」。如果在真正寫程式之前,你就能清楚地用語言說明整體邏輯,這本身就已經是一項非常強的能力,在面試時也會大大加分。
事實上,核心的演算法並不多,題型也高度重複。只要真的把每一類解法吃透,很少會遇到完全跳脫框架的問題。與其把 LeetCode 當成一場極度艱難的挑戰,不如把它當作一套非常有邏輯的訓練系統。
LeetCode 怎麼刷?
開始刷 LeetCode 前
- 先研究目標公司的考古題與出題方向
在開始大量刷題之前,先蒐集欲面試公司的過往面試題目,觀察其偏好的題型(例如陣列處理、樹結構、圖論、或是某些特定資料結構的變形),以此作為學習重心的參考依據,避免時間被平均分散在低相關性的題目上。 - 從高頻與經典題目開始,而非隨機刷題
建議以如 LeetCode 75、Blind 75 等高頻題目集合作為起點,並依主題分類練習(如 array、binary search、binary tree、graph、stack / queue 等),這樣在有限時間內,能夠完整覆蓋特定題型,而不是每個主題都只接觸零星幾題。 - 清楚目標職缺的程式語言,並以此語言進行練習
在開始刷題前,務必先確認欲面試職缺主要使用的程式語言(如 Python、Java、C++、Go 等),並在練習時一律使用該語言解題。不同程式語言在資料結構支援、語法寫法、效能與實作複雜度上差異極大,同一題目在不同語言中的難度與解法可能有明顯落差。過早切換語言,往往會分散注意力並降低訓練效果。
LeetCode 刷題時,要避免什麼?
- 避免依賴 IDE,模擬真實面試環境
盡可能在沒有 autocomplete 與函式提示的情境下撰寫程式碼,模擬白板或線上編碼面試的真實環境,訓練自己對語法、標準函式與基本資料結構操作的熟悉度。 - 善用解答資源,但不要死背
可以參考 LeetCode 官方解法、討論區以及第三方學習平台(如 iT 邦幫忙、部落格文章)整理的技巧與思路。但重點應放在理解解法背後的邏輯,而非記住程式碼本身。面試題幾乎不會與 LeetCode 完全相同,若只靠記憶,很容易在題目稍作變形時失去應對能力。
刷 LeetCode 的時候怎麼做更有效?
- 以 divide and conquer 的思維面對陌生題目
練習在每一題中拆解問題,將其轉化為數個已練習過的子問題,並逐步組合出完整解法。這種能力遠比「是否做過這一題」更加重要,並且能有效應對題目的變化與延伸。 - 透過 Weekly Contest 或限時練習建立手感
定期參加 LeetCode 的 Weekly Contest 或自行設定限時解題,有助於訓練時間管理、抗壓性以及快速分析新題的能力。不過需注意,同一類型的題目連續練習雖有利於建立模型,也容易產生「未看題目先知道怎麼解」的錯覺,建議混合不同題型進行訓練。 - 以 Medium 為主要練習難度
Easy 題可用於建立信心與熟悉平台操作,但多數經典模型與面試常見題型集中在 Medium。若在時間與基礎足夠的前提下,可少量練習 Hard 作為延伸,但前提是已真正內化 Medium 題目中的核心思想。
關於面試與心態
最後想談一點比較不那麼技術、但同樣重要的部分:心態。
面試從來都不只是能力測驗,也包含匹配度與運氣。不需要因為害怕「萬一遇到不會的題目」,就去把所有奇奇怪怪的題型全部刷過。大多數題目仍然圍繞在高頻與經典模型上,因為面試官也需要有效率地評估能力,而不是刻意刁難。
如果真的遇到不會的題,盡你所能拆解問題、說出你的推理過程與假設,這本身就已經展示出很高的專業素養。有時候你表現得很好,卻仍被拒絕;有時候感覺普通,卻意外地通過。這些結果不需要過度往心裡去。
當你把刷 LeetCode 的目標,從「通過面試」轉變為「打造更好的思考系統」,整個過程會變得清晰且可持續得多。


