[lintcode]12. 带最小值操作的栈

描述

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。

你实现的栈将支持pushpop 和 min 操作,所有操作要求都在O(1)时间内完成。

 

 思路:

在栈的基础上判断入栈值的大小,入栈的数多于一个时,出栈时判断栈内那个数最小,之后将这个数置于栈顶。

 

public class MinStack{
    private Stack<Integer> stack;
    private Stack<Integer> minStack;

    public MinStack(){
        stack = new Stack<Integer>();
        minStack = new Stack<Integer>();
    }

    public void push(int number){
        stack.push(number);
        if(minStack.isEmpty()){
            minStack.push(number);
        }
        else{
            minStack.min(Math.min(number, minStack.peek()));
        }
    }

    public int pop(){
        minStack.pop();
        return stack.pop();
    }

    public int min(){
        return minStack.peek();
    }
}

猜你喜欢

转载自blog.csdn.net/jcl314159/article/details/81210800