//维护一个Min Stack
public class MinStack {
    Stack<Integer> stk = new Stack<Integer>();
    Stack<Integer> minStk = new Stack<Integer>();

    public MinStack() {
        // do initialize if necessary
    }

    public void push(int number) {
        stk.push(number);
       if (minStk.isEmpty()){
           minStk.push(number);
       }
       else {
           int tmp = minStk.peek();
           if (tmp >= number) {
           // minStk.pop(); 
              minStk.push(number);
           }
       }
    }

    public int pop() {
           if (stk.peek().equals(minStk.peek())) {
           minStk.pop();
           }
        return stk.pop();
    }

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

results matching ""

    No results matching ""