美文网首页
leetcode155、最小值栈

leetcode155、最小值栈

作者: 残剑天下论 | 来源:发表于2020-05-14 14:54 被阅读0次
class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {
        
    }
    
    void push(int x) {
        // 同时更新数据栈和最小值栈

        // 如果数据栈为空
        if (_data.empty())
        {
            // 条件最后将x压入到数据栈中
            // 此处更新最小值栈
            // 直接将x压入到最小值栈中,就是当前最小
            _temp.push(x);
        }
        else
        {
            // 如果数据栈不为空,则需要比较,比较后将最小值更新为最小值栈顶部元素
            if (x < _temp.top())
            {
                _temp.push(x);
            }
            else
            {
                _temp.push(_temp.top());
            }

        }

        // 更新数据栈
        _data.push(x);
    }
    
    void pop() {
        // 同时弹出_data和_temp中的顶部元素,维持着最小值栈
        _data.pop();
        _temp.pop();
    }
    
    int top() {
        return _data.top();
    }
    
    int getMin() {
        return _temp.top();
    }
private:
    stack<int> _data;  // 数据栈
    stack<int> _temp;  // 存储当前最小值的栈
};

int main()
{
    MinStack minStack;
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);

    cout << "min: " << minStack.getMin() << endl;

    minStack.pop();
    cout << "top: " << minStack.top() << endl;

    cout << "min: " << minStack.getMin() << endl;
    return 0;
}

相关文章

  • 栈和队列相关数据结构的设计问题

    题目一:设计一个带有getMin功能的栈 [leetcode155]https://leetcode.com/pr...

  • 栈系列之-获取最小值

    一、栈获取最小值算法概述 获取栈的最小值算法:可以动态的获取一个栈中元素的最小值,动态的意思是,当该栈发生push...

  • 二.栈 4 带有取最小值min方法的栈

    问题:实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 ...

  • 12. 带最小值操作的栈

    12. 带最小值操作的栈 描述 笔记 数据 评测 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最...

  • lintcode 带最小值操作的栈

    实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min...

  • 求一个动态栈的最小值

    以{3,4,2,1}为例,求push和pop的时候的最小值 使用一个数据栈存储数据,一个辅助栈存储当前最小值,取栈...

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • 腾讯笔试--逛街

    主要的知识点是:单调栈,该题牢牢记得:栈中记录当前楼能看到的元素 单调栈是单调递增栈,栈顶是最小值单调栈存的是能看...

  • 【练习】实现一个栈

    实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) 使用两个栈...

  • jvm调优参数

    内存区域 栈 -Xss 堆 -Xms最小值-Xmx最大值-Xmn新生代最小-XX:newSize新生代最小值-XX...

网友评论

      本文标题:leetcode155、最小值栈

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