美文网首页考研数据结构
使用O(1)的时间复杂度找出最小元素

使用O(1)的时间复杂度找出最小元素

作者: 飞白非白 | 来源:发表于2018-12-04 23:32 被阅读2次
    // 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)
    // 的时间复杂度为O(1)
    // 定义两个栈分别为s1,s2。我们用s2保存最小值,s1保存原来的值
    
    void Push(const T&x)
        {
            s1.push(x);
            if (s2.empty() || x < s2.top())
            {
                s2.push(x);
            }
            else
            {
                s2.push(s2.top());
            }
        }
        void Pop()
        {
            s1.pop();
            s2.pop();
        }
        T GetMin()
        {
            if (!s2.empty())
            {
                return s2.top();
            }
        }
    

    相关文章

      网友评论

        本文标题:使用O(1)的时间复杂度找出最小元素

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