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

leetcode-155最小栈(历史最值)「建议收藏」原题链接设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,nul

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接
设计一个支持 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 操作总是在 非空栈 上调用。
题解
新开一个栈,存储历史最小值

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.net/168747.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 配置mysql读写分离[通俗易懂]

    配置mysql读写分离[通俗易懂]准备起码三台服务器我这里准备了192.168.0.63mycat192.168.0.64主192.168.0.65从然后是部署环境下载jbk和mycat,然后上传新建/usr/java/文件夹将jdk-8u321-linux-x64.tar.gz解压到该目录[root@xuegod63~]#mkdir/usr/java[root@xuegod63~]#tarxfjdk-8u321-linux-x64.tar.gz-C/usr/java/…

    2022年6月1日
    33
  • Java程序是如何运行的「建议收藏」

    Java程序是如何运行的「建议收藏」当我们写完一个Java源程序的时候,他是怎么被计算机运行的呢?本篇文章就来介绍下Java程序是如何运行的。一、java技术体系传统意义上来讲Java技术体系包含下边几个部分:Java程序设计语言各种硬件平台上的虚拟机class文件格式JavaAPI类库来自商业机构和开源社区的第三方Java类库jdk:Java语言开发工具包。包括Java程序设计语言,Java虚拟机,JavaAPI类库三个部分。jre:Java程序运行时环境。JavaSEAPI类库中的子集合Java虚拟机。jvm:

    2022年7月8日
    21
  • mysql fsync_mysql fsync

    mysql fsync_mysql fsync标签:1介绍数据库系统从诞生那天开始,就面对一个很棘手的问题,fsync的性能问题。组提交(groupcommit)就是为了解决fsync的问题。最近,遇到一个业务反映MySQL创建分区表很慢,仔细分析了一下,发现InnoDB在创建表的时候有很多fsync——每个文件会有4个fsync的调用。当然,并不每个fsync的开销都很大。这里引出几个问题:(1)问题1:为什么fsync开销相对都比较大…

    2022年5月6日
    48
  • lambda表达式用法_使用lambda表达式定义函数

    lambda表达式用法_使用lambda表达式定义函数一、Lamabda表达式定义二、Lamabda表达式语法三、C#中Lamabda使用场景四、J

    2022年9月19日
    0
  • 让程序员崩溃的瞬间(非程序员勿入)(程序员形象都不好)

    阅读本文大概需要2.3333分钟。前方高能,每一个程序员看完,你不笑死个人,你来找我,我自己看了好几遍,反正笑的停不下来,太特么有才了。1.公司实习生找Bug2….

    2022年4月10日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号