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

lintcode 带最小值操作的栈

作者: yzawyx0220 | 来源:发表于2016-12-12 16:46 被阅读137次

实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。

解法就是建立一个存放最小值的栈

class MinStack {
    stack<int> num;  
    stack<int> minnum;
public:
    MinStack() {
        // do initialization if necessary
    }

    void push(int number) {
        // write your code here
        num.push(number);
        if (minnum.size() == 0 || minnum.top() >= number) {  
            minnum.push(number);  
        }  
        else {  
            minnum.push(minnum.top());  
        } 
    }

    int pop() {
        // write your code here
        if (minnum.size() > 0 && num.size() > 0) {  
            int k = num.top();  
            num.pop();  
            minnum.pop();  
            return k;  
        }  
    }

    int min() {
        // write your code here
        return minnum.top();  
    }
};

相关文章

  • lintcode 带最小值操作的栈

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

  • 12. 带最小值操作的栈

    12. 带最小值操作的栈 描述 笔记 数据 评测 实现一个带有取最小值min方法的栈,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...

  • 腾讯笔试--逛街

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

网友评论

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

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