美文网首页Leetcode
Leetcode.155.Min Stack

Leetcode.155.Min Stack

作者: Jimmy木 | 来源:发表于2019-11-04 10:47 被阅读0次

题目

自己实现一个栈, 需要在一个O(1)复杂度求出栈的最小值.

Output: push(), pop(), int top(), int getMin()

思路

使用map或者vector都可以, vector应该是效率最高的.
最小值有一个特点, 这是一个栈, 如果栈底是最小值, 那无论怎么pop, 栈底都是最小值.
使用数组记录最小值即可, 类似于DP.

class MinStack {
public:

MinStack() {
}
void push(int x) {
    m_stack.push_back(x);
    if (m_min.empty()) {
        m_min.push_back(x);
    } else {
        if (x < m_min.back()) {
            m_min.push_back(x);
        } else {
            m_min.push_back(m_min.back());
        }
    }
}
void pop() {
    m_stack.pop_back();
    m_min.pop_back();
}
int top() {
    return m_stack.back();
}

int getMin() {
    return m_min.back();
}

private:
vector<int> m_stack;
vector<int> m_min;
};

总结

熟练掌握各种数据结构, 求最小值要分析stack最小值的特点.

相关文章

网友评论

    本文标题:Leetcode.155.Min Stack

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