实现一个特殊的栈,要求push,poll , getMin方法时间复杂度都是O(N)

Posted moris5013

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现一个特殊的栈,要求push,poll , getMin方法时间复杂度都是O(N)相关的知识,希望对你有一定的参考价值。

借助两个栈来实现

public class GetMinStack 

    private Stack<Integer> stackData;
    private Stack<Integer> stackMin;

    public GetMinStack() 
        this.stackData = new Stack<Integer>();
        this.stackMin = new Stack<Integer>();
    

    public void push(int obj) 
        if (stackMin.isEmpty()) 
            stackMin.push(obj);
         else 
            stackMin.push(obj < getmin() ? obj : getmin());
        
        stackData.push(obj);
    

    public int getmin() 
        if (stackMin.isEmpty()) 
            throw new RuntimeException("Your stack is empty.");
        
        return stackMin.peek();
    

    public int pop() 
        if (this.stackData.isEmpty()) 
            throw new RuntimeException("Your stack is empty.");
        
        this.stackMin.pop();
        return this.stackData.pop();
    

 

以上是关于实现一个特殊的栈,要求push,poll , getMin方法时间复杂度都是O(N)的主要内容,如果未能解决你的问题,请参考以下文章

设计一个有getMin功能的栈

设计一个有getMin功能的栈

设计一个有getMin功能的栈

"Coding Interview Guide" -- 设计一个有getMin功能的栈

设计一个有getMin功能的栈

设计一个有getMin功能的栈