class MinStack {
/** initialize your data structure here. */
public MinStack() {
}
Stack <Integer> stack = new Stack<Integer>();
Stack <Integer> minstack = new Stack<Integer>();
//int[] stack = new int[40];
int i = 0;
///int[] minstack = new int[40];
int j = 0;
//入栈 对两个栈都要入栈
//每次放入之前需要看最小栈
//的栈顶元素的值比较
public void push(int x) {
stack.push(x);
if(minstack.empty()){
minstack.push(x);
}else{
if(x <= minstack.peek()){
//维持最小栈的最小值,也是栈的最小值
minstack.push(x);
}
}
}
//出栈不是出最小栈
public void pop() {
if(!stack.empty()){
int element = stack.pop();
if(element == minstack.peek()){
minstack.pop();
}
}
}
//返回栈顶元素
public int top() {
if(stack.empty()){
return -1;
}
else{
return stack.peek();
}
}
//返回栈最小元素
public int getMin() {
return minstack.peek();
}
}