美文网首页
《剑指Offer》 面试题30 包含min函数的栈

《剑指Offer》 面试题30 包含min函数的栈

作者: 萨缪 | 来源:发表于2019-11-05 20:26 被阅读0次

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    源代码

    class Solution {
    public:
        //min保证当栈中的元素pop后 最小的元素是现在栈中最小的元素 如果pop出去的那个元素是之前栈最小的元素,那么现在,最小的元素就发生变化了
        void push(int value) {
            st.push(value);
            if (!minSt.empty()) {
            int min = minSt.top();
            if (value >= min) {
                minSt.push(min);
            } else {
                minSt.push(value);
            }
            } else {
                minSt.push(value);
            }
        }
        void pop() {
            int top = st.top();
            st.pop();
            minSt.pop();
        }
        int top() {
            int top = st.top();
            return top;
        }
        int min() {
            int top = minSt.top();
            return top;
        }
        private:
        stack <int> st;
        stack <int> minSt;
    };
    

    相关文章

      网友评论

          本文标题:《剑指Offer》 面试题30 包含min函数的栈

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