leetcode 155 最小栈

在这里插入图片描述
这个题看着第一个想法是栈加优先队列,存两个数据结构(是不是没救了)

其实此题非常简单,咱们只要让在栈中存一个pair,让栈中的每个元素维护最小值即可。

class MinStack {
typedef pair<int, int> P;
public:
    stack<P> s;
    /** initialize your data structure here. */
    MinStack() {

    }
    
    void push(int val) {
        if(s.empty())s.push(P(val, val));
        else
        {
            int last_min = s.top().second;
            s.push(P(val, min(last_min, val)));
        }
    }
    
    void pop() {
        s.pop();
    }
    
    int top() {
        return s.top().first;
    }
    
    int getMin() {
        return s.top().second;
    }
};

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

版权声明:本文为qq_39678022原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。