当前位置:  开发笔记 > 编程语言 > 正文

具有max函数的std :: stack <int>?

如何解决《具有max函数的std::stack<int>?》经验,为你挑选了1个好方法。

如何stack使用max函数实现max,其中max函数的复杂度为O(1)并且它使用O(n)额外内存?



1> SnG..:

我们的想法是通过堆栈中的对使用来跟踪最大值.如果在堆栈中插入内容,则相应地更新最大值.

class Stack {
private: 
    stack> s;

public:
    bool empty() const {
        return s.empty();
    }

    int max() const {
        assert (empty() == false);
        return s.top().second;
    }

    int pop() {
        int ans = s.top().first;
        s.pop();
        return ans;
    }

    void push(int x) {
        if (s.empty() || x > s.top().second)
        {
            s.emplace(x, x);
        }
        else
        {
            s.emplace(x, s.top().second);
        }
    }
};

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有