Coding Patterns
常見程式解題模式整理,涵蓋基礎到進階的演算法技巧。
Foundation Patterns
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Two Pointers | Easy | 使用兩個指針在資料結構中移動 | 檢查回文、合併排序陣列、尋找數對 | 資料庫索引掃描、文本比對、陣列去重 |
| Sliding Window | Easy/Medium | 維護可變大小視窗處理連續序列 | 最長無重複子串、最小子陣列、子陣列計數 | 網絡流量監控、用戶行為分析、移動平均線 |
| Fast & Slow Pointers | Easy | 不同速度指針解決循環檢測 | 鏈表環檢測、環起始位置、鏈表中點 | 系統死鎖檢測、循環引用檢查、無限循環診斷 |
Search & Sort
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Modified Binary Search | Medium | 二分搜尋變形處理非標準情境 | 旋轉陣列搜尋、最接近值、無限數列 | 資料庫索引優化、時間序列檢索、git bisect |
| Cyclic Sort | Easy | 利用數值範圍特性原地排序 | 缺失數字、重複數字、最小缺失正數 | 資料完整性檢查、序號管理、分配優化 |
Data Structure Applications
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| LinkedList Patterns | Easy/Medium | 指針操作與就地修改 | 反轉鏈表、中間節點、合併排序鏈表 | LRU Cache、Memory Pool、任務佇列 |
| Tree Patterns | Medium | 樹遍歷與重建 | 層序/前中後序遍歷、路徑和、序列化 | DOM 操作、檔案系統遍歷、表達式解析 |
| Graph Patterns | Hard | 圖遍歷、最短路徑、連通性 | DFS/BFS、拓撲排序、Dijkstra | 社交網絡分析、網絡路由、依賴關係解析 |
Intervals & Matrix
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Merge Intervals | Medium | 區間重疊與邊界處理 | 合併時間區間、會議室需求、重疊區間 | 資源預約、行事曆衝突、任務調度 |
| Islands (Matrix Traversal) | Medium | 二維矩陣連通性即圖遍歷 | 島嶼數量、最大面積、圍棋盤面 | 圖像區域分割、地圖識別、電路板連通性 |
Stack & Queue Applications
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Monotonic Stack/Queue | Medium/Hard | 維護單調性解決前後關係 | 下一個更大元素、最大矩形、股票跨度 | 價格走勢分析、數據趨勢監控、即時排名 |
Advanced Data Structures
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Two Heaps | Medium | 最大/最小堆維護動態中位數 | 數據流中位數、滑動窗口中位數、最大資本 | 響應時間監控、金融數據分析、負載均衡 |
| Top K Elements | Medium | 堆結構維護前 K 個元素 | 第 K 大元素、K 個最頻繁、K 個最近點 | 搜索結果排序、推薦熱門項目、資源監控 |
| K-way Merge | Hard | 合併 K 個已排序數據流 | 合併 K 個鏈表、合併 K 個陣列、最小區間 | 分布式數據整合、日誌合併、並行結果整合 |
Dynamic Programming
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| 0/1 Knapsack | Hard | 有限制條件下最優選擇 | 背包問題、子集合總和、資源分配 | 投資組合、服務器資源、預算規劃 |
| Fibonacci Numbers | Easy/Medium | 遞迴分解並儲存中間結果 | 爬樓梯、跳躍遊戲、解碼方法 | 遞迴優化、數列預測、自然生長模式 |
| Palindromic Subsequence | Hard | DP 解決回文相關問題 | 最長回文子序列、回文子串數量、最小插入 | DNA 序列分析、文字相似度、NLP |
| LCS/LCSubstring | Hard | 比較兩序列相似性 | 最長公共子序列、最小編輯距離、字串轉換 | 生物序列比對、版本差異、抄襲檢測 |
Combination & Enumeration
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Subsets | Medium | 組合方式生成所有子集 | 所有子集、大小寫組合、排列組合 | 權限系統、功能開關測試、菜單選項 |
| Backtracking | Hard | 試錯搜尋與回溯 | N 皇后、數獨、單詞搜索 | 路徑規劃、資源調度、自動化測試 |
| State Machine | Hard | 狀態與轉換抽象化 | 正則匹配、字串解析、遊戲邏輯 | 訂單狀態管理、工作流引擎、協議解析 |
Mathematics & Bit Manipulation
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| Bitwise XOR | Medium | XOR 特性解決數值問題 | 唯一數字、交換變數、奇偶檢測 | 加密算法、數據壓縮、硬體設計 |
| Number Theory | Medium/Hard | 數學原理與數論應用 | 質數判定、GCD/LCM、快速冪 | 加密系統、散列函數、數據校驗 |
| Prefix Sum | Medium | 預計算累計和優化區間查詢 | 區間和查詢、子數組和、累積頻率 | 金融數據分析、統計處理、積分圖 |
String Processing
| 模式 | 難度 | 核心思想 | 使用案例 | 實務應用 |
|---|---|---|---|---|
| String Manipulation | Medium/Hard | 高效字串搜索與處理 | KMP、Rabin-Karp、公共前綴後綴 | 文本編輯器、搜索引擎、DNA 分析 |
| Trie | Medium | 樹形結構儲存字串集合 | 自動完成、拼寫檢查、字典實現 | 搜索建議、輸入法、URL 路由 |