設計乙個支援 push ,pop ,top 操作,並能在常數時間內檢索到最小元素的棧。
輸入:[「minstack」,「push」,「push」,「push」,「getmin」,「pop」,「top」,「getmin」]
[,[-2],[0],[-3],,,,]
輸出:[null,null,null,null,-3,null,0,-2]
解釋:minstack minstack = new minstack();
minstack.push(-2);
minstack.push(0);
minstack.push(-3);
minstack.getmin(); --> 返回 -3.
minstack.pop();
minstack.top(); --> 返回 0.
minstack.getmin(); --> 返回 -2.
pop、top 和 getmin 操作總是在 非空棧 上呼叫。
建立乙個輔助棧記錄最小值。
在入棧時對最小棧的操作:
如果入棧元素值比最小棧頂元素小,則最小棧push(x);否則最小棧push(最小棧頂)
這樣可以時刻保持最小棧頂的元素就是最小值,且兩個棧的元素個數一樣多。
原因:入棧元素為最小值時:就記錄最小值
入棧元素不為最小值時:此時最小值已經在棧內,則若此入棧元素不出棧時,這個最小值一定沒有出棧。
class
minstack
void
push
(int x)
void
pop(
)int
top(
)int
getmin()
};/** * your minstack object will be instantiated and called as such:
* minstack* obj = new minstack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getmin();
*/
leetcode 155 最小棧 C語言
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...
LeetCode 155 最小棧 雙鏈表
155.最小棧 設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop to...
Leetcode155實現最小堆
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...