import java.util.*;
public class Solution {
public Deque<Integer> stack = new ArrayDeque<>(),min_set = new ArrayDeque<>();
//public int min = (int)1e9;
//public int cur = 0;
public void push(int node) {
stack.push(node);
if(!min_set.isEmpty()){
if(min_set.peek()<node){
min_set.push(min_set.peek());
}else{
min_set.push(node);
}
}else{
min_set.push(node);
}
}
public void pop() {
stack.pop();
min_set.pop();
}
public int top() {
return stack.peek();
}
public int min() {
// Deque<Integer> stack1 = new ArrayDeque<>(stack);
// while(!stack1.isEmpty()){
// if(stack1.peek()<min){
// min = stack1.pop();
// continue;
// }
// stack1.pop();
// }
return min_set.peek();//也是被我想出来了,最小值只与当前已添加元素的最小值有关
}
}