leetcode 155 最小棧 c 實現

2021-10-09 14:47:13 字數 1117 閱讀 4543

設計乙個支援 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...