堆疊 (Stack)
堆疊是一種基礎且重要的線性資料結構,具有「後進先出」的特性。它廣泛應用於遞迴實作、括號匹配檢查、表達式求值與深度優先搜尋 (DFS) 中。本章節將從基礎實作開始,逐步深入探討單調堆疊等進階解題技巧。
1. 基本堆疊#
介紹堆疊 (Stack) 的基本概念、操作(Push/Pop)以及如何使用 C++ STL 的 stack 容器來實作。
2. 堆疊經典問題#
透過「括號匹配」等經典例題,學習如何運用堆疊來處理具有巢狀結構或配對關係的字串問題。
3. 單調堆疊#
介紹一種特殊的堆疊應用技巧,用於維護序列中的單調性(遞增或遞減),是解決「下一個更大/更小元素」類問題的利器。
4. 單調堆疊經典問題#
深入探討單調堆疊的實際應用,解析如何利用單調性在線性時間內解決如「長條圖最大矩形」等複雜的區間搜尋問題。