單調棧問題

2021-10-06 21:45:50 字數 810 閱讀 4084

從名字上就聽的出來,單調棧中存放的資料應該是有序的,所以單調棧也分為單調遞增棧單調遞減棧

單調遞增棧:棧中資料出棧的序列為單調遞增序列

單調遞減棧:棧中資料出棧的序列為單調遞減序列

ps:這裡一定要注意所說的遞增遞減指的是出棧的順序,而不是在棧中資料的順序

單調棧板子題:

這題是簽到題,很明顯就是乙個單調棧問題,直接上板子,5分鐘解決。

#include

using

namespace std;

intmain

(void

)//正向來一遍 找到在當前位置能看到樓的數量(不算自身)

for(

int i =

0; i < v.

size()

; i++

)//反向來一遍 找到在當前位置能看到樓的數量(不算自身)

for(

int i = v.

size()

-1; i >=

0; i--

)reverse

(v2.

begin()

, v2.

end())

;//這裡+1的意思是加上自身,自己能看到自己

for(

int i =

0; i < v.

size()

; i++

)cout << v1[i]

+ v2[i]+1

<<

" ";

}

單調棧問題

單調棧能夠求得該數左邊離他最近的大於 小於的數 其他問題也可以轉換為此問題 例如 求 a i 左邊第乙個小於a i 的數 對於a i 每次入棧如果有大於等於a i 的數,直接出棧 證明 如果求左側第乙個小於a i 的數 如果a i 入棧後左側有大於a i 的數,則那個數不僅是大值而且還出現的比較早,...

單調棧 模板 單調棧模板

biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...

力扣 單調棧與單調佇列問題

單調棧 1.402.移掉k位數字 需要注意邊界情況,去除完無字元返回 判斷時不能有 號,棧內應該是不嚴格遞增的。2.316.去除重複字母 需要借助雜湊表來統計出現次數,並且標記是否已經存在於棧內。3.84.柱狀圖中最大的矩形,挺難的,針對每乙個柱需要確定左右比它低的作為邊界,正向遍歷單調棧確定左邊界...