刷題的目的:模式識別,不是記憶題目

工程師面試的算法題有一個共同的解法路徑:識別題目的模式套用對應的數據結構或算法分析時間空間複雜度

隨機刷 200 題的問題是:你記住了 200 個解,但沒有建立「這類題型套這類方法」的模式識別能力。換一個版本的題目就不會了。

系統推進的方式:每個主題連續做 10-20 題,直到看到題目的特徵就能反應「這是 Sliding Window / Two Pointers / BFS / DP」。


推薦的刷題順序

第一階段:基礎數據結構(2-3 週)

  1. Array / Two Pointers / Sliding Window(~20 題)

    • Two Sum、Best Time to Buy and Sell Stock
    • Container with Most Water(Two Pointers)
    • Longest Substring Without Repeating Characters(Sliding Window)
  2. Hash Table(~10 題)

    • Group Anagrams、Top K Frequent Elements
  3. Stack / Queue(~10 題)

    • Valid Parentheses、Min Stack、Implement Queue using Stacks
  4. Linked List(~10 題)

    • Reverse Linked List、Detect Cycle、Merge Two Sorted Lists

第二階段:樹和圖(3-4 週)

  1. Binary Tree(BFS / DFS)(~20 題)

    • Invert Binary Tree、Maximum Depth、Level Order Traversal
    • Validate BST、Lowest Common Ancestor
  2. Graph(BFS / DFS)(~15 題)

    • Number of Islands(BFS / DFS 的 template)
    • Clone Graph、Course Schedule(Topological Sort)
  3. Heap / Priority Queue(~10 題)

    • Kth Largest Element、Find Median from Data Stream

第三階段:動態規劃(3-4 週)

  1. 1D DP(~15 題)

    • Climbing Stairs → Fibonacci → House Robber → Word Break
    • 理解狀態轉移方程
  2. 2D DP(~10 題)

    • Unique Paths、Coin Change(Unbounded Knapsack)
    • Longest Common Subsequence

第四階段:進階主題

  1. Binary Search(~10 題)

    • Binary Search 基礎 → Search in Rotated Sorted Array → 各種變形
  2. Backtracking(~10 題)

    • Subsets → Permutations → Combination Sum → N-Queens
  3. Greedy(~10 題)

    • Jump Game → Interval 題型

推薦清單

Blind 75:Sean Prashad 整理的 75 道題,覆蓋所有面試高頻題型,適合時間有限時的最小刷題集。

NeetCode 150:Blind 75 的延伸版,YouTube 有每題的詳細解說,對初學者友善。

LeetCode 官方 Study Plans:Graph、DP、Binary Search 等主題各有官方整理的題單,免費。


刷題策略

計時練習:實際面試有 30-45 分鐘限制。先不計時把每題弄懂,之後要開始計時——20 分鐘內不能想出思路就看解答,不是硬坐兩小時。

復習機制:做錯或做得慢的題,2 天後重做一次,1 週後再重做一次。

語言選擇:用你最熟悉的語言。面試官不在乎你用 Python 還是 Java,在乎的是你的思路和 coding 速度。

思路先於 code:面試時先說思路(「我想用 Sliding Window,時間複雜度是 O(n)」),確認方向對了再寫 code。邊思考邊寫的面試官不喜歡——會覺得你在試誤。


刷到什麼程度才夠

這個問題沒有標準答案,但一個參考指標:對於本章 F-A 的主要主題,能在 30 分鐘內解 Medium 難度的題目,不需要提示

LeetCode 刷題是面試技巧,不是工程能力的全部。做到一定程度後,把時間分給系統設計(後端面試必考)和行為問題(往往比算法更影響 offer 決策)。