美文网首页
12. 带最小值操作的栈

12. 带最小值操作的栈

作者: 李清依 | 来源:发表于2018-02-27 10:24 被阅读0次

12. 带最小值操作的栈

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。

你实现的栈将支持pushpopmin 操作,所有操作要求都在O(1)时间内完成。

注意事项

如果堆栈中没有数字则不能进行min方法的调用

样例

如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1

标签

相关题目
思路:
用两个栈来实现,一个存取数据,另一个存取最小值。如遇比之前_min.top()还小的就push更新_min栈。

class MinStack {
private:
    stack<int> _min;
    stack<int> _data;
    
public:
    /** initialize your data structure here. */
    MinStack() {
        
    }
    
    void push(int x) {
        _data.push(x);
        if(_min.empty()){
            _min.push(x);
        }
        else{
            if(x>_min.top()){
                x=_min.top();
            }
            _min.push(x);
        }
    }
    
    void pop() {
        _data.pop();
        _min.pop();
    }
    
    int top() {
        return _data.top();
    }
    
    int getMin() {
        return _min.top();
    }
};

相关文章

  • 12. 带最小值操作的栈

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

  • JavaScript 力扣算法记录-持续更新2

    11.栈的最小值 解题 12.化栈为队 解题 13.节点间通路 解题 14.化栈为队 解题 15.栈排序 解题 1...

  • lintcode 带最小值操作的栈

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

  • 【练习】实现一个栈

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

  • 栈系列之-获取最小值

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

  • Stack

    最大栈,最小栈,要求能实时返回栈中最大值或者最小值的 就需要两个栈,一个栈是正常操作,另一个栈专门记录到此数为止的...

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

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

  • 求一个动态栈的最小值

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

  • 栈和队列

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

  • JVM指令

    凡是带const的表示将什么数据压操作数栈 iconst_2 将int型数据2压入到操作数栈; aconst_nu...

网友评论

      本文标题:12. 带最小值操作的栈

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