155. Min Stack

Posted 我的名字叫周周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了155. Min Stack相关的知识,希望对你有一定的参考价值。

/*
 * 155. Min Stack
 * 12.10 by Mingyang
 * 自行设计Stack,这种类型的题目一定要两个Stack同步来解
 * 这个题目自己想的时候一开始写错了,以为这个stack每次弹出来的是由小到大的顺序,
 * 然后实际上发现才是还是按照stack的顺序弹出,只是每次需要随时保存最小的值
 * 这里面有个技巧,当minstack为空的时候,自然push进去了。但是如果里面有值
 * 需要把这个值和x比较,小的push进去,这样如果那个值更小,会被push进去两次
 * 这么做的目的就是pop的时候可以同时pop两个出来
 */
class MinStack {
    private Stack<Integer> stack;
    private Stack<Integer> minStack;
    public MinStack(){
        stack=new Stack<Integer>();
        minStack=new Stack<Integer>();
    }
    public void push(int x) {
        stack.push(x);
        if (minStack.isEmpty()) {
            minStack.push(x);
        } else {
            minStack.push(Math.min(x, minStack.peek()));
        }//注意,每次push的时候两边同时都要push,这样的话后面pop的时候就可以直接两个一起pop了
    }
    public void pop() {
        minStack.pop();
        stack.pop();
    }
    public int getMin() {
        return minStack.peek();
    }  
    public int top(){
        return stack.peek();
    }
}

 

以上是关于155. Min Stack的主要内容,如果未能解决你的问题,请参考以下文章

155. Min Stack

#Leetcode# 155. Min Stack

155. Min Stack - Unsolved

155. Min Stack

Leetcode 155. Min Stack

155. Min Stack