155. 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

  • push(x) -- 将元素 x 推入栈中。
  • pop() -- 删除栈顶的元素。
  • top() -- 获取栈顶元素。
  • getMin() -- 检索栈中的最小元素。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

代码

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {}
    void push(int x) {
        s1.push(x);
        if (s2.empty() || x <= s2.top()) s2.push(x);
    }
    void pop() {
        if (s1.top() == s2.top()) s2.pop();
        s1.pop();
    }
    int top() {
        return s1.top();
    } 
    int getMin() {
        return s2.top();
    }    
private:
    stack<int> s1, s2;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 ...
    DAFFE阅读 680评论 0 0
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 2,383评论 0 3
  • 155. 最小栈 描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 pus...
    GoMomi阅读 225评论 0 0
  • 早上睁开眼睛,窗户外已经有阳光照进来了,我迷迷糊糊的想,不是定了6点的闹钟吗?居然没响! 赶紧洗漱出门,赶到医院9...
    墨鱼不游泳阅读 494评论 0 1
  • 花艳霞这一躺下就是一个多月,于是就这样住了下来。 小桃红的性子好,她一向喜欢这个好看又和自己一样出身的细奶奶,这会...
    籽盐阅读 158评论 0 2