本题中的min栈中的值一定是按大小顺序且按照插入先后顺序排列的,所以如果当前弹出的值不等于min栈最上方的值,则该值一定不是最小值
class MinStack {
ArrayList<Integer> stack = new ArrayList<Integer>();
ArrayList<Integer> min = new ArrayList<Integer>();
public void push(int x) {
if(stack.size()==0){
stack.add(x);
min.add(x);
}else{
stack.add(x);
if(x<=min.get(min.size()-1)){
min.add(x);
}
}
}
public void pop() {
if(stack.size()<=0)return;
int temp=stack.get(stack.size()-1);
stack.remove(stack.size()-1);
if(temp==min.get(min.size()-1)){
min.remove(min.size()-1);
}
}
public int top() {
if(stack.size()<=0)return Integer.MAX_VALUE;
return stack.get(stack.size()-1);
}
public int getMin() {
if(stack.size()<=0)return Integer.MAX_VALUE;
return min.get(min.size()-1);
}
}