在实现栈的基本功能的基础上,在实现返回栈中最小元素的操作

实现一个特殊的栈,在实现栈的基本功能的基础上,在实现返回栈中最小元素的操作

要求

  1. pop,push,getMin操作的时间复杂度为\(O(1)\)
  2. 设计的栈类型可以利用现成的栈结构

使用两个栈来实现,一个栈正常的放元素,另一个栈同时压入此时的最小值。

class SpStack{
    private Stack<Integer> stack = new Stack<>();
    private Stack<Integer> minStack = new Stack<>();
    private int min = Integer.MAX_VALUE;

    public void push(int number){
        min = Math.min(min,number);
        minStack.push(min);
        stack.push(number);
    }

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

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

posted @ 2021-06-13 17:10  锤子布  阅读(67)  评论(0编辑  收藏  举报