1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class MinStack {
private final Stack<Integer> stack; private final Stack<Integer> decreaseStack;
public MinStack() { this.stack = new Stack<>(); this.decreaseStack = new Stack<>(); }
public void push(int val) { stack.push(val); if (decreaseStack.isEmpty() || val <= decreaseStack.peek()) { decreaseStack.push(val); } }
public void pop() { int val = stack.pop(); if (decreaseStack.peek() == val) { decreaseStack.pop(); } }
public int top() { return stack.peek(); }
public int getMin() { return decreaseStack.peek(); }
}
|
References
155. Min Stack
剑指 Offer 30. 包含min函数的栈