美文网首页
155. 最小栈

155. 最小栈

作者: DAFFE | 来源:发表于2018-08-19 18:02 被阅读0次

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

    push(x) -- 将元素 x 推入栈中。
    pop() -- 删除栈顶的元素。
    top() -- 获取栈顶元素。
    getMin() -- 检索栈中的最小元素。

    //建立两个栈,size不一样
    class MinStack {
    private:
        /** initialize your data structure here. */
        stack<int> s1;
        stack<int> s2;
    public:   
        void push(int x) {
            s1.push(x);
            if (s2.empty() || x<=getMin()) s2.push(x);
        }
        
        void pop() {
            if (s1.top()==getMin()) s2.pop();
            s1.pop();   
        }
        
        int top() {
            return s1.top();
        }
        
        int getMin() {
            return s2.top();
        }
    };
    
    //只有一个栈
    class MinStack {
    private:
        /** initialize your data structure here. */
        stack<int> s1;
        int min=INT_MAX;
    public:   
        void push(int x) {
            if (x<=min) {//当前输入小于等于min时,多压一次min
                s1.push(min);
                min=x;
            }
            s1.push(x);
        }
        
        void pop() {
            int temp=s1.top();s1.pop();
            if (temp==min) {//当前top=min时,多弹一次上一次保存的min
                min=s1.top();
                s1.pop();
            }
        }
        int top() {
            return s1.top();
        }
        int getMin() {
            return min;
        }
    };
    

    相关文章

      网友评论

          本文标题:155. 最小栈

          本文链接:https://www.haomeiwen.com/subject/vuociftx.html