定義: 單調棧就是棧內元素遞增或者單調遞減的棧,並且只能在棧頂操作。單調棧的維護是o(n)的時間複雜度,所有元素只會進進棧一次
性質:
單調棧裡面的元素具有單調性;
元素加入棧前會把棧頂破壞單調性的元素刪除;
使用單調棧可以找到元素向左遍歷的第乙個比他小的元素(單增棧),也可以找到元素向左遍歷第乙個比他大的元素(單減棧);
一般使用單調棧的題目具有以下的兩點:
注意:雖然稱作是遞增遞減棧,但是實際儲存的值並不是單調的,因為可以存座標,只有座標帶入陣列才是單調的。這樣既可以儲存陣列的值,也可以儲存陣列下標。如下面的2,3,4例題。
例題:
1、leetcode 496. next greater element i
}class
solution
stk.
push
(nums2[i]
);
}
for(
int i =
0; i < nums1.
size()
; i++
)return res;
}
;
class
solution
stk.
push
(i);
}return res;}}
;
3、leetcode 84. largest rectangle in histogram
class
solution
ss.push
(i);
}return res;}}
;
4、leetcode 456. 132 pattern
class
solution
ss.push
(i);
}int min = nums[0]
;for
(int i =
1; i < n ; i++)if
(nums[i]
> right_min[i]
&& min < right_min[i]
)return
true;}
return
false;}
};
其他使用單調棧的例題仰視奶牛:找出每頭奶牛最近仰視物件
發射站;發出的能量只被兩邊最近的且比它高的發射站接收
leetcode monotone stack summary 單調棧小結
單調棧的介紹以及一些基本性質
秦淮河單調棧講義
來自leetcode的單調棧題目推薦:
定義: 單調棧就是棧內元素遞增或者單調遞減的棧,並且只能在棧頂操作。單調棧的維護是o(n)的時間複雜度,所有元素只會進進棧一次
性質:
單調棧裡面的元素具有單調性;
元素加入棧前會把棧頂破壞單調性的元素刪除;
使用單調棧可以找到元素向左遍歷的第乙個比他小的元素(單增棧),也可以找到元素向左遍歷第乙個比他大的元素(單減棧);
一般使用單調棧的題目具有以下的兩點:
注意:雖然稱作是遞增遞減棧,但是實際儲存的值並不是單調的,因為可以存座標,只有座標帶入陣列才是單調的。這樣既可以儲存陣列的值,也可以儲存陣列下標。如下面的2,3,4例題。
例題:
1、leetcode 496. next greater element i
class
solution
stk.
push
(nums2[i]
);
}
for(
int i =
0; i < nums1.
size()
; i++
)return res;
}
單調佇列和單調棧學習筆記
單調棧 單調棧是指乙個棧內部的元素是具有嚴格單調性的一種資料結構,分為單調遞增棧和單調遞減棧。單調棧有兩個性質 1.滿足從棧頂到棧底的元素具有嚴格的單調性 2.滿足棧的後進先出特性越靠近棧底的元素越早進棧 元素進棧過程 對於乙個單調遞增棧來說 若當前進棧的元素為 a 如果a 棧頂元素則直接將a 進棧...
學習筆記 單調佇列與單調棧
乙個具有單調性的棧。插入乙個元素時,如果直接插入不滿足單調性,就一直彈出,直到插入後滿足單調為止。luogu p1886 loj p10175 meaning of the problem 給你乙個數列 a 多組長度為 k 的區間的最大值與最小值。solution 一道非常經典的單調佇列題。以最大值...
單調棧演算法筆記
定義 單調棧就是棧內元素遞增或者單調遞減的棧,並且只能在棧頂操作。單調棧的維護是o n 的時間複雜度,所有元素只會進進棧一次 性質 單調棧裡面的元素具有單調性 元素加入棧前會把棧頂破壞單調性的元素刪除 使用單調棧可以找到元素向左遍歷的第乙個比他小的元素 單增棧 也可以找到元素向左遍歷第乙個比他大的元...