
演算法與資料結構
📘 深度概覽
資料來源與整理脈絡#
本筆記整合了王爭《資料結構與演算法之美》、Cormen 等《Introduction to Algorithms》(CLRS)、以及 LeetCode NeetCode 路線圖等多種來源,重新編排為一條從複雜度分析到面試實戰的縱向學習路線。切入角度以「先理解結構、再理解策略」為主軸:前半部聚焦資料結構的記憶體佈局與操作複雜度,後半部則處理需要演算法策略(Algorithmic Paradigm)的問題。相較於單一書籍照本宣科或單純題解整理,本筆記特別強調章節之間的依賴鏈,並透過「跨倉庫導讀」與 LeetCode 解題筆記互相對照,把理論與實作分開維護。
完整摘要#
全筆記以十五個章節構成四個遞進層次。第一層「基礎概念」以時間/空間複雜度(Time/Space Complexity)與大 O 表示法(Big-O Notation)為起點,建立後續所有章節共用的分析語言。第二層處理線性結構與其衍生操作:陣列、鏈結串列、堆疊、佇列為核心,向外延伸出排序(基礎、進階、線性三類)、查找(二分查找與跳表)、以及以雜湊表(Hash Table)為代表的 O(1) 存取結構,當中特別整理工業級排序混合策略、裝載因子(Load Factor)與衝突解決等實作細節。第三層轉入非線性結構:二元搜尋樹(BST)、紅黑樹(Red-Black Tree)、堆(Heap)構成樹狀部分,圖論則從鄰接表、BFS/DFS 走到拓撲排序與 Dijkstra;字串處理章節獨立處理 BF、KMP、Trie 與 AC 自動機等單/多模式匹配演算法。第四層整理演算法策略:遞迴與分治(Divide and Conquer)作為基礎心法,貪心(Greedy)、回溯(Backtracking)、動態規劃(Dynamic Programming, DP)三者並列為主流範式,並透過硬幣找零、背包、子序列、股票交易等問題串接出 DP 三要素——重疊子問題、無後效性、最優子結構。最末以並查集(Union-Find)、布隆過濾器(Bloom Filter)、LRU、位圖等進階結構與位操作技巧收尾,銜接面試準備章節的「切題四件套」與白板程式設計流程。
適用情境與閱讀路徑#
目標讀者為準備技術面試的工程師、複習資料結構與演算法的在職開發者、以及希望系統性補齊 CS 基礎的自學者。建議閱讀順序與章節編號一致:先讀 01「基礎概念」建立複雜度語感,再依 02 至 08 補齊資料結構底盤;演算法策略部分 09 至 12 有明顯依賴鏈,遞迴 → 分治 → 貪心 → 回溯 → 動態規劃 不宜跳讀,DP 章節內部亦自成八節體系。13 至 14 章可在工程情境出現時再回頭翻閱,17「面試技巧」則建議在投履歷前一週重讀。讀完應能在面試題中辨識題型、選擇合適範式、並用大 O 估算複雜度。
學習路徑#
基礎概念 → 線性結構 → 排序 → 查找 → 雜湊
↓
樹結構 → 圖論 → 字串處理
↓
遞迴分治 → 貪心 → 回溯 → 動態規劃
↓
進階結構 → 位操作 → 面試技巧章節總覽#
| 主題 | 核心內容 |
|---|---|
| 基礎概念 | 學習動機、複雜度分析 |
| 線性結構 | 陣列、鏈結串列、堆疊、佇列 |
| 排序演算法 | 基礎排序、進階排序、線性排序 |
| 查找演算法 | 二分查找、跳表 |
| 雜湊 | 雜湊表原理、雜湊演算法、應用 |
| 樹結構 | 二元樹、BST、紅黑樹、堆 |
| 圖論 | 圖基礎、BFS/DFS、最短路徑 |
| 字串處理 | 字串匹配、Trie、AC 自動機 |
| 遞迴與分治 | 遞迴思想、分治策略 |
| 貪心演算法 | 貪心策略與適用場景 |
| 回溯演算法 | 回溯策略、剪枝最佳化 |
| 動態規劃 | DP 核心思想與經典問題 |
| 進階結構 | 並查集、布隆過濾器、LRU |
| 位操作 | 位運算技巧與應用 |
| 面試技巧 | 準備策略、白板程式設計 |
工程實踐相關章節已遷移到
infrastructure-architecture↗;推薦系統獨立為recommendation-system↗。