首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >leetcode-155最小栈(历史最值)「建议收藏」

leetcode-155最小栈(历史最值)「建议收藏」

作者头像
全栈程序员站长
发布2022-09-22 09:51:02
发布2022-09-22 09:51:02
3230
举报

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

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

示例:

输入: [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”] [[],[-2],[0],[-3],[],[],[],[]]

输出: [null,null,null,null,-3,null,0,-2]

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

提示:

pop、top 和 getMin 操作总是在 非空栈 上调用。 题解 新开一个栈,存储历史最小值

代码语言:javascript
复制
class MinStack { 
   
public:
    /** initialize your data structure here. */
    stack<int>s;
    stack<int>m;
    MinStack() { 
   
    }
    
    void push(int val) { 
   
        s.push(val);
        if(!m.empty())m.push(min(val,m.top()));
        else m.push(val);
    }
    
    void pop() { 
   
        s.pop();
        m.pop();
    }
    
    int top() { 
   
        return s.top();
    }
    
    int getMin() { 
   
        return m.top();
    }
};

/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(val); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168747.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档