考研数据结构

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

2018-12-04  本文已影响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();
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读