面试题30:包含min函数的栈

2019-10-07  本文已影响0人  scott_alpha

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push和pop的时间复杂度都是O(1)。
思路:用data栈装数据,用min辅助栈存每次压入时候的最小数据。
解决方案:

public class Question30 {
    Stack<Integer> data = new Stack<Integer>();
    Stack<Integer> min = new Stack<Integer>();
    public void pop(int value){
        data.push(value);
        if (min.empty() || value < min.pop()){
            min.push(value);
        }else {
            min.push(min.peek());
        }
    }
    public void pop(){
        if (!data.empty()){
            data.pop();
            min.pop();
        }
    }
    public int min(){
        return min.peek();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读