leetcode - 155 最小棧
阿新 • • 發佈:2018-11-30
設計一個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。
- push(x) -- 將元素 x 推入棧中。
- pop() -- 刪除棧頂的元素。
- top() -- 獲取棧頂元素。
- getMin() -- 檢索棧中的最小元素
思路:
使用兩個棧來實現,一個棧來按順序儲存push進來的資料,另一個用來存出現過的最小值。
class MinStack { private Stack<Integer> stack1 = new Stack<>();//資料棧 private Stack<Integer> stack2 = new Stack<>();//輔助棧 /** initialize your data structure here. */ public MinStack() { } public void push(int x) { stack1.push(x); if(stack2.isEmpty() || stack2.peek() >= x){ stack2.push(x); } } public void pop() { if(stack2.peek().equals(stack1.pop())){ stack2.pop(); } } public int top() { return stack1.peek(); } public int getMin() { return stack2.peek(); } }