資料結構與演算法

這個系列記錄資料結構與演算法的學習筆記。每篇筆記包含概念說明、ASCII 視覺化圖解、Java 實作程式碼與時間/空間複雜度分析。


學習路線建議

不知道從哪裡開始?依照以下難度分級,循序漸進學習:

難度說明建議對象
⭐ 入門最基礎的資料結構與演算法,先從這些開始初學者、非本科轉職
⭐⭐ 進階需要入門基礎,面試常考有基礎想加強、準備面試
⭐⭐⭐ 挑戰較複雜的結構與技巧,競程或進階面試才會用到競程選手、資深工程師

⭐ 入門(先學這些):Array、Linked List、Stack、Queue、Hash Table、Linear Search、Sorting basics

⭐⭐ 進階:Tree、Heap、Graph、Binary Search、Dynamic Programming、Recursion、Two Pointers、Sliding Window

⭐⭐⭐ 挑戰:Trie、AVL Tree、Segment Tree、Advanced Graph、Backtracking、String Algorithms、Math Algorithms


資料結構(Data Structures)

基礎資料結構

#主題難度說明
01Array 陣列連續記憶體、隨機存取、動態擴容
02Linked List 鏈結串列單向/雙向、插入刪除 O(1)、指標操作
03Stack 堆疊LIFO、括號匹配、運算式求值
04Queue 佇列FIFO、Circular Queue、BFS 應用
05Hash Table 雜湊表雜湊函數、碰撞處理、O(1) 查找
06Tree 樹⭐⭐BST、遍歷方式、前中後序
07Heap 堆積⭐⭐Min/Max Heap、Priority Queue、Heapify
08Graph 圖⭐⭐鄰接表/矩陣、BFS/DFS、有向/無向

進階資料結構

#主題難度說明
09Trie 前綴樹⭐⭐⭐字串搜尋、自動補全、前綴匹配
10AVL Tree 自平衡樹⭐⭐⭐旋轉操作、平衡因子、O(log n) 保證
11Segment Tree 線段樹⭐⭐⭐區間查詢、區間更新、Lazy Propagation
12Fenwick Tree 樹狀陣列⭐⭐⭐前綴和、單點更新、BIT
13Union-Find 並查集⭐⭐⭐路徑壓縮、按秩合併、連通分量
14LRU Cache⭐⭐HashMap + 雙向鏈結串列、O(1) 操作
15Deque 雙端佇列⭐⭐頭尾皆可操作、滑動視窗應用
16Skip List 跳躍表⭐⭐⭐多層索引、機率平衡、Redis 應用
17Bloom Filter 布隆過濾器⭐⭐⭐機率型資料結構、空間效率、誤判率

演算法(Algorithms)

基礎演算法

#主題難度說明
01Searching 搜尋Linear Search、Binary Search
02Sorting 排序Bubble、Selection、Insertion、Merge、Quick Sort
03Dynamic Programming 動態規劃⭐⭐Fibonacci、LCS、背包、Coin Change、LIS
04Recursion 遞迴⭐⭐階乘、費氏數列、河內塔、回溯法
05Graph Algorithms 圖演算法⭐⭐Dijkstra、Bellman-Ford、Floyd-Warshall、拓撲排序
06Greedy 貪婪演算法⭐⭐活動選擇、分數背包、Huffman、Kruskal

進階演算法與技巧

#主題難度說明
07String Algorithms 字串演算法⭐⭐⭐KMP、Rabin-Karp、Z Algorithm、Manacher
08Bit Manipulation 位元運算⭐⭐AND/OR/XOR、位元技巧、常見應用
09Two Pointers 雙指標⭐⭐相向指標、同向指標、快慢指標
10Sliding Window 滑動視窗⭐⭐固定/可變視窗、最大/最小子陣列
11More Sorting 進階排序⭐⭐⭐Heap、Counting、Radix、Bucket、Shell Sort
12Advanced Graph 進階圖論⭐⭐⭐Prim、Tarjan SCC、割點橋、二分圖匹配
13Backtracking 回溯法⭐⭐⭐N-Queens、排列組合、子集生成
14Divide and Conquer 分治法⭐⭐合併排序、快速冪、最近點對
15Monotone Stack 單調堆疊⭐⭐⭐下一個更大元素、柱狀圖最大矩形
16Prefix Sum 前綴和⭐⭐一維/二維前綴和、差分陣列
17Math Algorithms 數學演算法⭐⭐⭐GCD、質數篩、快速冪、組合數學

閱讀建議

  • 入門者:從 ⭐ 入門的文章開始,建立資料結構與演算法的基礎觀念。
  • 面試準備:重點看 ⭐⭐ 進階,特別是 03 動態規劃、09 雙指標、10 滑動視窗、13 回溯法。
  • 競程選手:⭐⭐⭐ 挑戰級的進階資料結構(11-13)和進階圖論(12)是常見考點。
  • 實務開發:05 Hash Table、14 LRU Cache、17 Bloom Filter 在生產系統中最常出現。

此資料夾下有 34 條筆記。