棧和佇列 單調佇列 單調棧

2021-09-24 10:54:37 字數 656 閱讀 5088

講解部落格鏈結——

一、單調棧

1、什麼是單調棧?

單調棧是指乙個棧內部元素具有嚴格單調性(單調遞增, 單調遞減)的一種資料結構。

2、單調棧的兩個性質:

滿足從棧頂到棧底具有嚴格的單調性

滿足後進先出的特徵, 越靠近棧底的元素越早的進棧。

3、元素進棧的過程:

對於當前進棧元素x

①如果x < 棧頂元素, x 進棧。

②否則 棧頂元素出棧, 直到 到 棧頂元素 < x(且棧不為空); x進棧。

舉個例子:

1, 7, 3, 5;

開始1, 進入棧, 棧內元素(從棧頂開始)

到7, 7> 棧頂元素1.所以1出棧 ,此時 棧為空, 所以7可以入棧,

然後3 < 7 , 3入棧

然後5> 棧頂3 所以,3出棧 , 5 < 棧頂元素7 所以 5入棧

4、模擬實現
int x;

stack<

int>s;

for(int i =

1;i <= n;i++)

s.push

(x);

}}

單調棧和單調佇列

最近又在重新刷題,又看到了單調棧和單調佇列的題目,發現當時也就是背一背就過了,沒有領會到精髓,這次看了幾位前輩寫的心得,感覺理解深了一些。傳送門 關鍵 用單調佇列來解決問題,一般都是需要得到當前的某個範圍內的最小值或最大值。就比如滑動視窗中的最大值問題 eg 1,1,2,3,4 5,6,7,7,9 ...

單調棧和單調佇列

本文摘自部落格,歡迎前往部落格以獲得更好的體驗。從名字上就聽的出來,單調棧中存放的資料應該是嚴格單調有序的,具有以下兩個性質。滿足從棧頂到棧底的元素具有嚴格的單調遞增或單調遞減性 滿足棧的後進先出特性,即越靠近棧底的元素越早進棧。單調棧也分為單調遞增棧和單調遞減棧。stackst for 遍歷這個陣...

單調棧和單調佇列

用陣列模擬出單調棧和單調佇列 單調棧常常用來維護離最近的比當前值小或大的值,單調佇列維護乙個固定區間的最小或最大值 單調棧維護乙個左邊比他小的值的 1 include2 using namespace std 3int st 100010 n,a 100010 4 inttt 5int main 6...