class MinStack {
private Stack<Integer> stack,minStack;
/** initialize your data structure here. */
public MinStack() {
//初始化正常栈
stack = new Stack();
//初始化最小栈
minStack = new Stack();
}
public void push(int x) {
stack.push(x);
//若最小栈为空,或入栈元素小于等于最小栈的栈顶元素则入栈
if(minStack.empty()||x<=minStack.peek()){
minStack.push(x);
}
}
public void pop() {
int top =stack.pop();
//若出栈元素等于最小栈栈顶元素,最小栈栈顶元素也得出栈
if(minStack.peek()==top){
minStack.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return minStack.peek();
}
}