LintCode 带最小值操作的栈

原创 2015年07月09日 13:39:46

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

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

您在真实的面试中是否遇到过这个题? 
Yes
样例

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

用了两个stack

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

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

    int pop() {
        // write your code here
        if (mins.size()>0 && date.size() > 0) {
          int t = date.top();
        date.pop();
        mins.pop();
        return t;
        }
        return 0;
    }

    int min() {
        // write your code here
        if (mins.size()>0 && date.size() > 0)
        return mins.top();
        return 0;
    }
};


用JAVA代码实现出栈入栈并获取栈中最小值的程序

【前言】学习Java编程一段时间,对于一些涉及业务逻辑的案例没有太多的机会接触;闲的时候添加了很多群,里面有很多涉及到算法的问题,比较感兴趣(有的时候脑袋还是要练一练的,O(∩_∩)O哈哈~)。 言归...
  • z_programmer
  • z_programmer
  • 2016年12月03日 11:56
  • 3287

实现一个栈,实现入栈,出栈,求最小值,时间复杂度为O(1)

题目: 实现一个栈,实现入栈,出栈,求栈中最小值,时间复杂度为O(1) 方案一: 设计栈中元素类型为一个包含元素值和当前栈中所有元素的最小值的对象 入栈时,将对象入栈,当前元素的值小于栈中最小...
  • xyzbaihaiping
  • xyzbaihaiping
  • 2016年04月16日 23:58
  • 2331

动态规划--最小调整代价

91. Minimum Adjustment Cost 【题目】 Given an integer array, adjust each integers so that the differen...
  • sinat_26230689
  • sinat_26230689
  • 2016年07月10日 22:12
  • 2009

LintCode 12 带最小值操作的栈

题目:MinStack要求:实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。 注意事项如果...
  • linglian0522
  • linglian0522
  • 2017年02月16日 18:39
  • 258

<LeetCode> 题12: 带最小值操作的栈

题目描述: 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。 **注意:**如果堆...
  • u013003827
  • u013003827
  • 2016年07月15日 17:07
  • 968

lintcode寻找旋转排序数组中的最小值/循环有序数组的查找

问题描述循环有序数组假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。你可以假设数组中不存在重复的元素。笔记还...
  • waltonhuang
  • waltonhuang
  • 2016年09月25日 17:33
  • 651

LintCode-寻找旋转排序数组中的最小值

问题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转,输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素,例如数组{3,4,5,1,2}为数组{1,2,3,4,5}的一个旋转,...
  • u011822516
  • u011822516
  • 2015年11月16日 11:44
  • 777

Lintcode 将数组重新排序以构造最小值

给定一个整数数组,请将其重新排序,以构造最小值。  注意事项 The result may be very large, so you need to return a string ...
  • Hk_john
  • Hk_john
  • 2017年04月19日 20:20
  • 385

LintCode 寻找旋转排序数组中的最小值

1 . 寻找旋转排序数组中的最小值假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 你可以假设数组中不...
  • shinanhualiu
  • shinanhualiu
  • 2015年10月07日 17:56
  • 408

算法2_实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)

实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。  push,pop和min函数的时间复杂度都为O(1)。 看到这个题目最直接的反应是用一个变量来保存当前栈的最...
  • wang_zhenwei
  • wang_zhenwei
  • 2016年07月19日 23:51
  • 377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LintCode 带最小值操作的栈
举报原因:
原因补充:

(最多只允许输入30个字)