155. Min Stack

class MinStack {
    public Stack<Integer>st1=new Stack<>();
    public Stack<Integer>st2=new Stack<>();

    public MinStack() {
        
    }
    
    public void push(int val) {
        if(st2.empty()){
            st2.push(val);
        }else if(st2.peek()>=val){
            st2.push(val);
        }
        st1.push(val);
    }
    
    public void pop() {
        // 涉及到非primitive的比较,都用Objects.equals(),否则不对
        if(Objects.equals(st1.peek(),st2.peek())){
            st2.pop();
        }
        st1.pop();
    }
    
    public int top() {
        return st1.peek();
    }
    
    public int getMin() {
        return st2.peek();
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容