定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 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更新,也就...