劍指 30 包含min函式的棧

2021-10-21 02:46:49 字數 1108 閱讀 4974

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 o(1)。

示例:minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.min(); --> 返回 -3.

minstack.pop();

minstack.top(); --> 返回 0.

minstack.min(); --> 返回 -2.

思路:因為要求得到棧的最小元素的時間為o(1),所以設定乙個輔助棧,和資料棧大小相同,出棧入棧操作同步,不同在於輔助棧入棧時需拿棧頂和當前待入的數字比較,入較小的數字即可。

/**

* initialize your data structure here.

*/var minstack = function() ;

/**

* @param x

* @return

*/minstack.prototype.push = function(x) else

};/**

* @return

*/minstack.prototype.pop = function() ;

/** * @return

*/minstack.prototype.top = function()

return -1;

};/**

* @return

*/minstack.prototype.min = function() ;

/** * your minstack object will be instantiated and called as such:

* var obj = new minstack()

* obj.push(x)

* obj.pop()

* var param_3 = obj.top()

* var param_4 = obj.min()

*/

劍指offer 棧 30 包含min函式的棧

維護兩個棧 棧st儲存所有元素,minst是乙個單調棧,棧頂元素為min 1.入棧 st.push x 若minst.top x或minst為空,x入棧minst 2.出棧 若minst與st棧頂元素相同,則二者都出棧,否則st出棧 3.獲取最小值 若minst不為空,返回minst棧頂元素 cla...

劍指T30 包含min函式的棧

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。要求 不僅要獲得當前的最小元素,還要獲得在此之前的次小元素。分析 需要建立乙個輔助棧來不斷依次存放當前的最小元素。每次將資料壓入資料棧的時候,都將其與輔助棧的棧頂元素進行比較,如果vlaue比輔助棧頂的元素小,則將value...

劍指Offer 30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 首先觀察到min的時間複雜度是o 1 所以不可能是在我們呼叫min的時候再去計算棧中元素的最小值,最小值一定是提前儲存好的。其次最小值必須隨著push和pop更新,也就...