import java.util.Stack;
public class MinStack {
Stack<Integer> normal = new Stack<>();
Stack<Integer> min = new Stack<>();
public MinStack() {}
//normal与min中元素个数保持一样,即便新进来normal中的值较大,min还要
//把当前最小值在更新一遍;
public void push(int x) {
normal.push(x);
if (min.empty()) {
min.push(x);
} else {
int m = min.peek();
if (x <= m) {
min.push(x);
} else {
min.push(m);
}
}
}
public void pop() {
normal.pop();
min.pop();
}
//方法二
//若新进来的数是大数,则min保持不动,除非比当前最小的还小,才插入min
/**
* public void push(int x){
* normal=push.(x);
* if(min.empty()){
* min.push(x);
* }else{
* int m=min.peek();
* if(x<m){
* min.push(x);
* }
* }
* }
* public void pop(){
* if(normal.peek()!=min.peek()){
* normal.pop();
* }else{
* normal.pop();
* min.pop();
* }
* }
*/
public int top() {
return normal.peek();
}
public int getMin() {
return min.peek();
}
}