class MinStack {    private Stack<Integer> dataStack; // 用于存储数据的栈    private Stack<Integer> minStack; // 用于存储最小值的栈    /** 初始化MinStack */    public MinStack() {        dataStack = new Stack<>(); // 初始化存储数据的栈        minStack = new Stack<>(); // 初始化存储最小值的栈    }    /** 将元素x推到栈顶 */    public void push(int x) {        dataStack.push(x); // 数据栈间接将x推到栈顶        if (minStack.isEmpty() || x <= minStack.peek()) { // 如果最小值栈为空或者x<=最小值栈顶,将x推到最小值栈顶            minStack.push(x);        }    }    /** 删除栈顶元素 */    public void pop() {        if (!dataStack.isEmpty()) { // 如果数据栈不为空            int top = dataStack.pop(); // 删除数据栈顶并获取栈顶元素值            if (top == minStack.peek()) { // 如果删除的元素是最小值栈顶元素                minStack.pop(); // 将最小值栈顶元素也删除            }        }    }    /** 返回栈顶元素 */    public int top() {        if (!dataStack.isEmpty()) { // 如果数据栈不为空            return dataStack.peek(); // 间接返回数据栈顶元素        }        return -1; // 其余状况返回-1,也能够抛出异样    }    /** 返回栈的最小元素 */    public int min() {        if (!minStack.isEmpty()) { // 如果最小值栈不为空            return minStack.peek(); // 返回最小值栈顶元素        }        return -1; // 其余状况返回-1,也能够抛出异样    }}