題目:
設計乙個支援 push ,pop ,top 操作,並能在常數時間內檢索到最小元素的棧。
push(x) —— 將元素 x 推入棧中。
pop() —— 刪除棧頂的元素。
top() —— 獲取棧頂元素。
getmin() —— 檢索棧中的最小元素。
示例:輸入:
["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 操作總是在 非空棧 上呼叫。
思路分析:
棧是屬於乙隻有乙個出口進行讀取的資料結構,要在整個棧裡進行遍歷非常困難,所以我們自然想到用乙個輔助棧來儲存最小值;
演算法思路:
用乙個stack和乙個minstack;minstack的棧頂用來儲存當前stack棧中的最小元素;
當push進乙個元素時,stack中直接push進乙個元素時,如果該元素小於等於minstack棧頂的元素時,即更新minstack,將其也push進minstack中。
當pop時,注意pop的元素是否為minstack中的棧頂元素(即stack中最小元素),如果是,則minstack也要pop,更新最小元素;
getmin直接彈出minstack中的棧頂元素即可
**如下:
classminstack
public
void push(int x)
}public
void pop()
}public
inttop()
public
int getmin()
}
leetcode 棧 155 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...
155實現最小棧
題意 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。方法一 使用輔助棧class minstack def init self self.stack...
LeetCode 簡單 棧 155 最小棧
設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top getmin...