LeetCode 155. Min Stack

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.
    Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> Returns -3.
minStack.pop();
minStack.top();      --> Returns 0.
minStack.getMin();   --> Returns -2.

题意:自己实现一个栈

java代码:

Stack stack = new Stack<>(); //declaration one stack here
    int min = Integer.MAX_VALUE;  //先声明min, no worry about stack.empty

    public void push(int x) {
        if (x <= min) {
            stack.push(min);
            min = x;         //单独记录下最小值是什么
        }
        stack.push(x);       //(看上面的解释)
    }

    public void pop() {
        int top = stack.pop();  //是赋值语句,也完成了pop操作
        if (top == min){
            min = stack.pop(); //之前每次出现min就push进两次,这里pop第二次
        }
    }

    public int top() {
        return stack.peek();  //import java.util.Stack
    }

    public int getMin() {
        return min;
    }

你可能感兴趣的:(LeetCode 155. Min Stack)