《劍指offer》26 包含min功能的棧

2021-10-25 02:30:49 字數 979 閱讀 7194

包含min功能的棧:要求設計乙個棧,除了正常進出棧以外,還有乙個輸出最小值的功能。

首先自然而然可以想到python自帶的min函式……

其實沿著min函式的思路走,如果我們想要搜尋乙個list的最小值,我們可以從左往右遍歷,然後先找到前兩個元素的較小者,再將其與第三個元素比較,得出更小者,再向後比較,以此類推。那麼對本題也是類似,我們可以使用上述的判斷方法,同時設定乙個輔助棧,用於存放當前棧的最小值。設定輔助棧是因為,若最小值出棧了,最小值需要進行更新,因此需要輔助棧來儲存次小值。基於這個思路,我們可以很快寫出**。

# offer26-solution

class

solution

:def

__init__

(self)

: self.stack =

self.minstack =

defpush

(self, node)

:# 正常入棧

if self.minstack ==

or node < self.

min():

# 輔助棧的push

else

:min()

)def

pop(self)

:if self.stack ==

or self.minstack ==

:# 出棧和普通判斷

return

none

self.stack.pop(

) self.minstack.pop(

)def

top(self)

:# 出棧

return self.stack[-1

]def

min(self)

:# 出輔助棧

return self.minstack[-1

]

比起前面的鍊錶題,和後面的二叉樹,這幾道題算蠻簡單的……

劍指Offer題目1522 包含min函式的棧

題目1522 包含min函式的棧 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 2320 解決 753 題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n...

劍指Offer 21 包含min函式的棧

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式,在該棧中,呼叫min,push,pop的時間複雜度都為o 1 思路 模擬棧push,pop過程 include include using namespace std template class minstack vir...

《劍指offer》20 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式。c 實現 思路 應用乙個輔助棧,壓的時候,如果a棧的壓入比b棧壓入大,b棧不壓,小於等於,ab棧同時壓入,出棧,如果,ab棧頂元素不等,a出,b不出。class solution void pop int top int m...