leetcode.cn/problems/mi…
class MinStack {
Stack<Integer> dataStack;
Stack<Integer> minStack;
public MinStack() {
dataStack = new Stack<>();
minStack = new Stack<>();
}
public void push(int val) {
dataStack.push(val);
if (minStack.empty()) {
minStack.push(val);
} else if (val < getMin()) {
minStack.push(val);
} else {
minStack.push(getMin());
}
}
public void pop() {
if (dataStack.empty()) {
throw new RuntimeException("stack is empty");
}
dataStack.pop();
minStack.pop();
}
public int top() {
return dataStack.peek();
}
public int getMin() {
if (minStack.empty()) {
throw new RuntimeException("stack is empty");
}
return minStack.peek();
}
}