General

155 Min Stack

Use 2 stacks

//   |1|  
//   |3|      |1|
//   |2|      |2|
//  stack   minStack
public class MinStack{
    private Stack<Integer> stack;
    private Stack<Integer> minStack;
    public MinStack() {
        this.stack = new Stack<Integer>();
        this.minStack = new Stack<Integer>();
    }

    void push(int number) {
        stack.push(number);
        if (minStack.empty()) minStack.push(number);
        else{
            if (number <= minStack.peek()) minStack.push(number);
        }
    }

    int pop() {
        if (stack.peek().equals(minStack.peek())){ // compare using equals()
            minStack.pop();
        }
        return stack.pop();
    }

    int min() {
        return minStack.peek();
    }

Binary Tree node increasing order

  1. curQueue 儲存當前node

  2. nxtQueue 儲存下一層node

Last updated

Was this helpful?