两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

什么是單調(diào)棧?有什么好處?

就是棧中元素,按遞增順序或者遞減順序排列的時(shí)候,

單調(diào)棧的最大好處就是時(shí)間復(fù)雜度是線性的,每個(gè)元素遍歷一次!

單調(diào)棧是一種數(shù)據(jù)結(jié)構(gòu),它里邊存放的數(shù)據(jù)具有單調(diào)性,每個(gè)元素都只進(jìn)棧一次,進(jìn)棧時(shí)會把破壞棧的單調(diào)性的元素彈出。

為了描述方便,以下舉例及偽代碼以維護(hù)一個(gè)整數(shù)的單調(diào)遞增棧為例。


1. 過程

插入

將一個(gè)元素插入單調(diào)棧時(shí),為了維護(hù)棧的單調(diào)性,需要在保證將該元素插入到棧頂后整個(gè)棧滿足單調(diào)性的前提下彈出最少的元素。

例如,棧中自頂向下的元素為{0,11,45,81}。

單調(diào)棧

插入元素14時(shí)為了保證單調(diào)性需要依次彈出元素0,11,操作后棧變?yōu)閧14,45,81}。

單調(diào)棧

用偽代碼描述如下:

insert x
while !sta.empty() && sta.top()<x
    sta.pop()
sta.push(x)


2. 使用

自然就是從棧頂讀出來一個(gè)元素,該元素滿足單調(diào)性的某一端。

例如取出的即棧中的最小值。


點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)