Divide and Conquer
說明分治法(Divide and Conquer)拆解、解決、合併三步驟,以陣列找最大值為例逐步拆解,並比較與動態規劃的差異。
Bit Manipulation
介紹位元運算(Bit Manipulation)常見技巧,包含用 XOR 找出唯一不重複數字、n and (n-1) 消去最低位元等,附 JS 程式碼與複雜度說明。
Two Pointers
介紹雙指標(Two Pointers)技巧的相向與同向兩種手法,如何把 O(n^2) 暴力解降到 O(n),附兩數之和逐步拆解範例。
Sliding Window
詳解滑動視窗(Sliding Window)技巧,涵蓋固定大小與動態大小兩種視窗類型,將暴力解 O(n^2) 降到 O(n),附 JS 程式碼與常見誤區。
Prefix Sum
說明前綴和(Prefix Sum)如何預先計算累加總和,讓任意區間總和查詢降到 O(1),附陣列逐步拆解範例與 JS 實作。
Floyd's Cycle Detection (龜兔賽跑演算法)
介紹龜兔賽跑演算法如何用快慢雙指標偵測 Linked List 是否有環,並進一步找出環的起點,附複雜度分析與逐步拆解範例。
Tree Traversal
說明樹的走訪(Tree Traversal)如何以 BFS、DFS 兩種方式拜訪所有節點,用家族合照比喻解釋層序與深度優先的差異。
Graph Traversal
說明 Graph Traversal 如何以 BFS、DFS 走訪圖中所有頂點並避免重複造訪,比較兩者先廣後深與先深後廣的差異。
Topological Sort
說明拓撲排序(Topological Sort)如何處理有向無環圖的依賴順序,介紹 Kahn 演算法(BFS)與 DFS 兩種解法及複雜度分析。
Dijkstra's Algorithm
說明 Dijkstra 演算法如何搭配 Heap 與 Graph 求出單一起點到所有頂點的最短路徑,用 Google 地圖類比解釋其運作邏輯。
Bellman-Ford Algorithm
說明 Bellman-Ford 演算法如何處理帶有負權重的最短路徑問題,並利用「多鬆弛一輪」的技巧偵測負權重環。
Shortest Path Faster Algorithm (SPFA)
介紹 Shortest Path Faster Algorithm(SPFA)如何用 Queue 只鬆弛「真正需要重新檢查」的節點,大幅加速 Bellman-Ford 在稀疏圖上的表現。
Floyd-Warshall's Algorithm
說明 Floyd-Warshall 演算法如何一次算出 Graph 中任兩點間的最短路徑,並比較與 Dijkstra 演算法只解單一起點的差異。
Sorting
全面整理排序演算法,涵蓋 Bubble、Selection、Insertion、Quick、Merge、Heap Sort 原理、複雜度比較與 JS 程式碼實作。
Binary Search
詳解二分搜尋法(Binary Search)在已排序陣列中查找元素的原理,提供 JavaScript 與 Python 實作、複雜度分析與常見誤區。
Quickselect
介紹 Quickselect 演算法如何運用 Quick Sort 的 Partition 概念,在未排序陣列中快速找出第 k 小或第 k 大元素,附複雜度分析。
Backtracking
介紹回溯法(Backtracking)選擇、遞迴、撤銷的核心解題框架,以 nums = [1, 2] 為例逐步拆解子集合生成過程,並說明常見誤區。
Greedy Algorithm
介紹貪婪演算法(Greedy Algorithm)每步取局部最優解的策略,說明為何 Greedy 不一定得到全局最優,並比較與動態規劃的差異。
Dynamic Programming
解析動態規劃(Dynamic Programming)如何用空間換取時間,比較暴力解與 DP 解的差異,並說明 Top-Down 與 Bottom-Up 兩種實作方式。