題目:
定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。
要求:不僅要獲得當前的最小元素,還要獲得在此之前的次小元素。
分析:需要建立乙個輔助棧來不斷依次存放當前的最小元素。每次將資料壓入資料棧的時候,都將其與輔助棧的棧頂元素進行比較,如果vlaue比輔助棧頂的元素小,則將value壓入輔助棧,否則,重複將輔助棧的棧頂元素壓入輔助棧。
但此時,依據以上分析,在牛客網上實現時,卻無法通過測試,**如下:
#include#include#includeclass solution
void pop()
int top()
int min()
private:
std::stackm_data;
std::stackm_min;
};
結果如下:
不知道問題在**~~
但是,如果在value大於輔助棧頂元素時,不將輔助棧頂元素重複壓入輔助棧,反而通過了算例測試,**和結果如下:
有大神給講解一下嗎?
劍指 30 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 minstack.pu...
劍指offer 棧 30 包含min函式的棧
維護兩個棧 棧st儲存所有元素,minst是乙個單調棧,棧頂元素為min 1.入棧 st.push x 若minst.top x或minst為空,x入棧minst 2.出棧 若minst與st棧頂元素相同,則二者都出棧,否則st出棧 3.獲取最小值 若minst不為空,返回minst棧頂元素 cla...
劍指Offer 30 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 首先觀察到min的時間複雜度是o 1 所以不可能是在我們呼叫min的時候再去計算棧中元素的最小值,最小值一定是提前儲存好的。其次最小值必須隨著push和pop更新,也就...