设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
发布日期:2021-10-06 02:38:30 浏览次数:2 分类:技术文章

本文共 1094 字,大约阅读时间需要 3 分钟。

设计一个支持 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.

 

提示:

  • poptop 和 getMin 操作总是在 非空栈 上调用。

 

class MinStack {

    private Stack<Integer> stack;

    private Stack<Integer> minStack;

    /** initialize your data structure here. */

    public MinStack() {

        this.stack = new Stack<>();

        this.minStack = new Stack<>();

    }

    public void push(int x) {

        this.stack.push(x);

        if(this.minStack.isEmpty()){

            this.minStack.push(x);

        }else{

            int min = this.minStack.peek();

            if(min >= x){

                this.minStack.push(x);

            }

        }

 

    }

    public void pop() {

        int x = this.stack.pop();

        int min = this.minStack.peek();

        if(x == min) this.minStack.pop();

    }

    public int top() {

        return this.stack.peek();

    }

    public int getMin() {

        return this.minStack.peek();

    }

}

 

转载地址:https://blog.csdn.net/luxuiary/article/details/105988722 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:验证回文串
下一篇:设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。

发表评论

最新留言

做的很好,不错不错
[***.13.112.107]2022年07月06日 02时57分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

java voidfunction,使用`std :: function&lt; void(...)&gt;`来调用非void函数 2020-01-10 11:49:21
冯偌依曼计算机的基本原理是,03级计算机专业《计算机组成原理》试卷A 2020-01-10 11:49:21
python中search,django python中的search_fields 2020-01-10 11:49:21
restclient发送json,如何使用javax.ws.rs.client.WebTarget从REST客户端发送json对象 2020-01-10 11:49:21
java eclipse6.6,使用Eclipse编译java 7 for java 6 2020-01-10 11:49:21
全国青年职业技能大赛 计算机程序设计员,全国青年职业技能大赛计算机程序设计员理论参考试题库.docx... 2020-01-10 11:49:20
笔记本html连接电视机黑屏是怎么回事,电视机黑屏是什么原因 几招教你搞定 2020-01-10 11:49:20
计算机专业ppt答辩范文,计算机科学与技术专业论文答辩范例.ppt 2020-01-10 11:49:20
计算机网络专业外文文献,网络工程专业外文翻译--计算机网络.doc 2020-01-10 11:49:20
2014计算机基础知识,2014年计算机基础知识精选部分及答案 2020-01-10 11:49:20
2021高考模拟考成绩查询时间,2021高三二模时间具体是几号 2020-01-10 11:49:20
网络中的多台计算机互相协作,主题五网络技术基础(含答案) 2020-01-10 11:49:20
c post传文件到服务器带参数,NSMutableURLRequest,在POST方式下传递参数 2020-01-10 11:49:19
攻击网站和攻击服务器的区别,DDoS攻击与CC攻击的区别是什么? 2020-01-10 11:49:19
江西省2021高考成绩排名查询,985/211大学2021年江西录取分数线及位次排名 2020-01-10 11:49:20
案例教学法 计算机,高校计算机案例教学法探讨 2020-01-10 11:49:18
计算机控制有效点火,计算机控制点火系统.ppt 2020-01-10 11:49:18
微信api服务器ip地址,api.weixin.qq.com服务器iP 2020-01-10 11:49:18
bombe计算机 诞生时间,bombe 2020-01-10 11:49:18
dw虚拟服务器,dw设置服务器 2020-01-10 11:49:18