码迷,mamicode.com
首页 > 其他好文 > 详细

155. Min Stack

时间:2016-06-03 09:54:42      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

/*
 * 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

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5555075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!