public class MyStack {
public Stack<Integer> stackData;
public Stack<Integer> stackMin;
public MyStack() {
stackData = new Stack<Integer>();
stackMin = new Stack<Integer>();
}
public void push(Integer value) {
if (stackMin.isEmpty()) {
stackMin.push(value);
} else if (value < -stackMin.peek()) {
stackMin.push(value);
}
stackData.push(value);
}
public Integer pop() {
if (stackData.isEmpty()) {
throw new NullPointerException("stack is empty");
}
Integer val = stackData.pop();
if (val.equals(stackMin.peek())) {
stackMin.pop();
}
return val;
}
public Integer getMin() {
if (stackMin.isEmpty()) {
throw new NullPointerException("stack is empty");
}
return stackMin.peek();
}
}