830. 單調棧
154. 滑動視窗
79. 滑動視窗的最大值
單調棧的應用場景:求最近的最值
單調佇列的應用場景:
求滑動視窗內的最值
單調佇列步驟:(值得注意的是單調佇列存的是下標,方便判斷隊頭是否滑出視窗)1.判斷隊頭是否滑出視窗
2.判斷完之後那麼隊頭就是滑動視窗的最值,處理題目邏輯(順序不一定在2,如果題目要求包含當前元素,那麼此步移到4之後執行)
3.形成單調佇列
4.新增當前元素
單調棧是單調佇列的特殊,只有一端開口,不用判斷是否滑出視窗。600. 仰視奶牛(pair同時記錄高度和座標)
599. 發射站(正反做一遍單調棧)
135. 最大子序和(字首和 + 單調佇列)
652. 切蛋糕 (最大子序和)
資料結構 單調棧與單調佇列
單調棧是棧內元素具有嚴格單調性的一種資料結構。由於我們要找到每個數左邊第乙個比它小的數,那麼我們便可以發現 對於棧中任意乙個數,如果在它右邊存在乙個數比它小 或相等 那麼這個數便是不可能被選中的,直接彈出棧即可。於是我們便可以進行如下操作 按序列舉每乙個數,準備將當前這個數壓棧時,從棧頂開始遍歷,如...
模板 資料結構 單調佇列 單調棧
一道例題,給定一串數字,求每連續k個數字的最大 最小值。思路 初始化乙個初始長度為k的單調佇列,按從左到右加入元素,同時滿足這個佇列中的元素是遞減的 也就是假如某個數被兩個距離不超過k的大於他的數夾著,他會被從隊尾調出佇列 得到最大值。向右移動一格,假如隊首離開範圍,出隊。往隊尾加入元素前,把隊尾的...
單調佇列與單調棧
單調棧 單調棧,顧名思義,就是維持單調性 遞增或者遞減 的棧結構,如果新入棧的元素破壞了單調性,就彈出原先棧內元素,直到能夠滿足單調性 用途 它可以很方便地求出某個數的左邊或者右邊第乙個比它大或者小的元素,而且總時間複雜度o n 並且單調棧本身並不難實現 維護 每次入棧前先檢驗入棧後是否會破壞棧的單...