剑指Offer30包含min函数的栈

Posted hesorchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer30包含min函数的栈相关的知识,希望对你有一定的参考价值。

题目

剑指 Offer 30. 包含min函数的栈

为栈新增功能, O ( 1 ) O(1) O(1)得到栈中最小值。

解题思路

如果当前压入的元素不是最小值,那么它一定不会作为最小值。所以我们只需要开一个辅助栈维护好每个“在压入时是最小值”的元素。

代码

class MinStack


public:
    stack<int> st, st2;

    MinStack()
    
        while (!st.empty())
            st.pop();
        while (!st2.empty())
            st2.pop();
    

    void push(int x)
    
        st.push(x);
        if (!st2.size() || x <= st2.top())
            st2.push(x);
    

    void pop()
    
        if (st2.size() && st.top() == st2.top())
            st2.pop();
        st.pop();
    

    int top()
    
        return st.top();
    

    int min()
    
        return st2.top();
    
;

以上是关于剑指Offer30包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 30. 包含min函数的栈 / 剑指 Offer 31. 栈的压入弹出序列

剑指Offer打卡30.包含min函数的栈

剑指Offer打卡30.包含min函数的栈

剑指Offer打卡30.包含min函数的栈

剑指Offer30包含min函数的栈

剑指 Offer 30. 包含min函数的栈