包含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...