【LeetCode-Java】155. Min Stack

2023-11-11

1.原题

链接:https://leetcode.com/problems/min-stack/

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.

Example:

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

2.题目大意

定义栈的数据结构,实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)

3.解题思路

为了能在O(1)时间内得到最小元素,需要有辅助的栈,保存当前的最小值,记为最小栈。这个辅助的栈,需在push(),pop()操作时更新,push时若当前最小栈为空或入栈的值<=最小栈栈顶的值,则将当前入栈的值压入最小栈;pop时,若出栈的值和最小栈栈顶的值相同,则最小栈也pop。

4.代码实现

public class MinStack {
ArrayList<Integer> stack=new ArrayList<>();
ArrayList<Integer> minStack=new ArrayList<>();  
    public void push(int x) {
    stack.add(x);
    if(minStack.isEmpty() || minStack.get(minStack.size()-1)>=x)
    minStack.add(x);  
    }   
    public void pop() {
    if(stack.isEmpty())
    return;
    int last=stack.remove(stack.size()-1);
    if(!minStack.isEmpty() && minStack.get(minStack.size()-1)==last)
    minStack.remove(minStack.size()-1);     
    } 
    public int top() {
    if(stack.isEmpty())
    return 0;
    return stack.get(stack.size()-1);   
    }
    public int getMin() {
    if(minStack.isEmpty())
    return 0;
    return minStack.get(minStack.size()-1);
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LeetCode-Java】155. Min Stack 的相关文章

随机推荐

  • 如何实现一个组件封装?

    问题网址 http bbs daxiangclass com thread 271 htm js前端组件的封装方法 定义一个类 类中增加一个方法 body中定义一个dom节点 脚本中把dom节点和类定义结合起来 实现特定的组件功能 vue组
  • Python爬取淘宝商品

    爬取淘宝商品信息 一个小菜鸡 用了十四个小时写了个爬虫 时间是有点长 但我心里美滋滋啊 记录下过程 也是第一次写博客排版什么的就凑合吧 主要用了selenium BeautifulSoup库 初始化 在十秒内页面加载完毕 调用seleniu
  • matlab函数大全

    转载方法 https blog csdn net yanmantian article details 53256765 本文转载自http www cnblogs com gtts archive 2011 05 20 2052339 h
  • cocos2d-x中有一个JniHelper类详细使用

    主体思路 通过JNI获取java虚拟机 再获取当前程序的JNI环境 通过JNI环境获取需要调用的java类信息 再获取需要调用的java类中的函数信息 再通过JNI环境调用 使用类信息 函数信息 调用对应的java函数 看起来好像有点复杂
  • Selenium之下拉框操作详解

    前言 执行自动化测试过程中遇到下拉框 包含 单选 多选 如何定位到下拉框并选中某个选项 1 下拉框的分类 select 标签 非 select 标签 2 Select 下拉列表处理 针对 select 标签的下拉列表 Selenium 提供
  • CCObject的分析:release retain基于2.2.3 增加3.2ref对比

    CCSprite fish new CCSprite 02 CCLOG After new d fish gt retainCount 03 fish gt init 04 CCLOG After init d fish gt retain
  • 图像的视网膜变换研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 图像的视网膜变换是受到人眼启发的一种技术
  • Spring Native实战(畅快体验79毫秒启动springboot应用)

    应用启动速度不超过100毫秒 启动即达到性能峰值 C1 C2等手段已经用不上了 运行时更低的内存消耗 docker镜像不含JDK 所需文件已经抽取出来放入镜像 官方展示的含有Spring Boot Spring MVC Jackson To
  • 面试时不要有谦卑的态度

    今天在B站看了几个Java面试的实战视频 然后茶余饭后产生了一些思考 在找工作过程中 虽然我们跟企业不是平等的 但起码是双向选择 你只需要以下三个问题即可 你可以谦虚但不可以谦卑 谦卑往往意味着你潜意识里想偷懒 不想学那么多 思考那么多就可
  • 虚拟机黑屏虚拟机繁忙的解决方法

    问题描述 不知是因为VMware版本的问题还是其他原因 有时候虚拟机很长时间不能正常开机 整个屏幕都是黑的 想关掉VM都关不了 提示 虚拟机繁忙 解决方法 呼出任务管理器强制结束VM的进程 然后再次打开VM 会出现以下的提示 而且之前出问题
  • c++ 编写杨辉三角(详细注释)

    include
  • PHP表单的创建和使用

    用户注册
  • 应用实践

    导读 蜀海供应链是集销售 研发 采购 生产 品保 仓储 运输 信息 金融为一体的餐饮供应链服务企业 因其业务比较复杂 2020 年底完成了以 Apache Doris 为核心的架构升级 并在 2021 年开始建设以 Apache Doris
  • 梯度下降算法总结

    基本梯度下降法 随机梯度下降 批梯度下降法 Momentum梯度下降法 Nesterov Momentum梯度下降法 AdaGrad RMSprop AdaDelta Adam 机器学习中 求解的问题常常变为最优化问题 求解最优化问题 常常
  • Scrum中的产品需求预审

    原文作者 Mike Cohn 为了保持产品待办事项 product backlog 的整洁有序 我们需要召开product backlog refinement会议 有时也叫product backlog grooming 这个会议是在一个
  • 悲观锁synchronized、乐观锁CAS

    1 悲观锁 乐观锁 悲观锁是一种思想 在多线程竞争下 加锁 释放锁会导致比较多的上下文切换和调度延时 引起性能问题 一个线程持有锁会导致其它所有需要此锁的线程挂起 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置 引起性能
  • 高合汽车旗下可进化超跑SUV高合HiPhi X亮相海口国际新能源车展

    2021年1月8日 高端新能源智能出行品牌高合汽车旗下高合HiPhi X亮相第三届海口国际新能源汽车展览会 华人运通高合汽车创始人丁磊在现场透露 上市至今高合HiPhi X限量3000辆创始版车型即将预订售罄 累计收获了32000多位留资用
  • 【广州华锐互动】AR远程巡检系统在设备维修保养中的作用

    随着科技的不断发展 AR 增强现实 远程巡检系统在设备检修中发挥着越来越重要的作用 这种系统可以将AR技术与远程通信技术相结合 实现对设备检修过程的实时监控和远程指导 提高设备检修的效率和质量 首先 AR远程巡检系统可以帮助检修人员更好地理
  • NodeJs应用场景【学习路线图】

    Nodejs学习路线图 从零开始nodejs系列文章 将介绍如何利Javascript做为服务端脚本 通过Nodejs框架web开发 Nodejs框架是基于V8的引擎 是目前速度最快的Javascript引擎 chrome浏览器就基于V8
  • 【LeetCode-Java】155. Min Stack

    1 原题 链接 https leetcode com problems min stack Design a stack that supports push pop top and retrieving the minimum eleme