跳转至

30.包含 min 函数的栈 (Easy)*

题目描述*

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

代码*

使用 vector 或 stack 实现即可。

class MinStack {
private:
    vector<int> minStack;
    vector<int> inner;
    int len;
public:
    /** initialize your data structure here. */
    MinStack() {
        len = 0;
    }

    void push(int x) {
        if(minStack.empty()) {
            minStack.push_back(x);
        }else {
            minStack.push_back(minStack.back() > x ? x : minStack.back());
        }
        inner.push_back(x);
        len++;

    }

    void pop() {
        inner.pop_back();
        len--;
        minStack.pop_back();
    }

    int top() {
        return inner.back();
    }

    int min() {
        return minStack.back();
    }
};

最后更新: July 23, 2022