LeetCode 155

https://leetcode.cn/problems/min-stack/description/

难度:中等

栈存储一个 pair,当前值和前缀最小值,初始化存储一个哨兵节点。

stack<pair<int, int>> st;

时间复杂度:所有操作均为 O(1)。

空间复杂度:O(q)。其中 q 是 push 调用的次数。最坏情况下,只有 push 操作,需要 O(q) 的空间保存元素。

class MinStack {
    stack<pair<int, int>> st;
public:
    MinStack() {
        st.emplace(0, INT_MAX);
    }

    void push(int val) {
        st.emplace(val, min(getMin(), val));
    }

    void pop() {
        st.pop();
    }

    int top() {
        return st.top().first;
    }

    int getMin() {
        return st.top().second;
    }
};