1. push()、pop()和top()分别对应栈的push()、pop()和peek();
  2. min()方法返回栈中的最小值,用优先队列PriorityQueue可以实现:
    2.1 队列中的元素与栈中的完全相同,并且是从小到大排序好的,队首始终是栈的实时最小数字。
    2.2 栈push()新的数字,队列也add()并排序;栈pop()出数字,队列也remove()出该数字。
import java.util.Stack;
import java.util.*;

public class Solution {

    private Stack<Integer> s = new Stack<>();
    private PriorityQueue<Integer> pq = new PriorityQueue<>();

    public void push(int node) {
        s.push(node);
        pq.add(node);
    }

    public void pop() {
        pq.remove(s.pop());
    }

    public int top() {
        return s.peek();
    }

    public int min() {
        return pq.peek();
    }
}