ACM题库~

LeetCode 155. Min Stack

2017-10-23  本文已影响8人  关玮琳linSir

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

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<Integer> 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;
    }

上一篇 下一篇

猜你喜欢

热点阅读