目錄
- 1.題目
- 2.答案
- 3.提交結果截圖
鏈接: 最小棧
1.題目
設計一個支持 push
,pop
,top
操作,并能在常數時間內檢索到最小元素的棧。
實現 MinStack
類:
MinStack()
初始化堆棧對象。void push(int val)
將元素val推入堆棧。void pop()
刪除堆棧頂部的元素。int top()
獲取堆棧頂部的元素。int getMin()
獲取堆棧中的最小元素。
示例 1:
輸入:
["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.
提示:
-2^31 <= val <= 2^31 - 1
pop
、top
和getMin
操作總是在 非空棧 上調用push
,pop
,top
, andgetMin
最多被調用3 * 10^4
次
2.答案
class MinStack {/*** 存儲棧*/private Stack<Integer> stack = new Stack<>();/*** 最小值棧(只記錄對應最小值)*/private List<Integer> list = new ArrayList<>();public MinStack() {}public void push(int val) {stack.push(val);if (list.isEmpty() || list.get(list.size() - 1) > val) {list.add(val);} else {list.add(list.get(list.size() - 1));}}public void pop() {stack.pop();if (list.size() > 0) {list.remove(list.size() - 1);}}public int top() {return stack.peek();}public int getMin() {return list.get(list.size() - 1);}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj = new MinStack();* obj.push(val);* obj.pop();* int param_3 = obj.top();* int param_4 = obj.getMin();*/
3.提交結果截圖
整理完畢,完結撒花~ 🌻