leetcode-155. 最小栈

 

 

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {

    }
    stack<int> s;
    stack<int> mins;
    void push(int val) {

        if(mins.empty()){  // mins栈为空,元素直接push
            mins.push(val);
        }else{
            int tmp = mins.top();
            if(val<=tmp)  // 如果不为空,判断当前元素小于等于则直接入minis栈
                mins.push(val);
        }
        s.push(val);

    }
    
    void pop() {
        int tmp = s.top();
        if(tmp==mins.top())  // 弹出元素的时候如果弹出的元素与mini栈的栈顶元素形同,同样弹出
            mins.pop();
        s.pop();
    }
    
    int top() {
        return s.top();
    }
    
    int getMin() {
        return mins.top();
    }
};

/**
 * 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();
 */

 

posted @ 2021-07-21 18:16  三一一一317  阅读(30)  评论(0)    收藏  举报