設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push(x) -- 將元素 x 推入棧中。
pop() -- 刪除棧頂的元素。
top() -- 獲取棧頂元素。
getmin() -- 檢索棧中的最小元素。
示例:minstack minstack = new minstack();
minstack.push(-2);
minstack.push(0);
minstack.push(-3);
minstack.getmin(); --> 返回 -3.
minstack.pop();
minstack.top(); --> 返回 0.
minstack.getmin(); --> 返回 -2.
思路: 使用太多封裝雖然偷了懶,效率影響確實很大...使用兩個棧,乙個儲存真實的資料,另乙個儲存所有最小值
eg:push : -1 0 -2 3 4
push操作完成後,兩個棧的情況如下:
stack: -1 0 -2 3 4
mindata: -1 -2
只要當前mindata的top(-2)未被彈出,棧中的最小值就一直是-2.
如果此時stack彈出的值為(-2),那麼mindata中的值也要更新,將-2彈出.
那麼此時
stack: -1 0
mindata: -1
棧中的最小值就為-1了
1class
minstack
1415
public
void push(int
x) 20}21
22public
void
pop()
26stack.pop();27}
2829
public
inttop()
3233
public
intgetmin()
36 }
leetcode題 155 最小棧(簡單)
一 題目描述 155.最小棧 簡單 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack...
LeetCode刷題筆記 155 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。略看sdc1的時候感覺getmin 有問題,但其實push 和pop 寫的很巧妙 比如依次錄入5,4,...
leetcode 棧 155 最小棧
設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...