题目描述:
设计一个支持 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.

提示:首先我们需要了解清楚题目给的意思,这里我们特别需要注意他的top()是谁,代码中有详细的注释,供参考

import java.util.Stack;/*** 实现一个最小栈* 入栈:* 1.首先需要两个栈 一个stack 一个minStack* 2.对于stack来说,每一次都会存放数据* 3.对于minStack来说* 3.1如果是第一次存放,那么肯定会将stack中存放的第一个数据存放进去* 3.2如果不是一次存放,那么每一次入栈的元素需要和栈顶元素进行比较,如果栈顶元素小,则入栈,如果比栈顶元素哒,那么不入栈* 出栈:* 1.需要判断stack栈的数据,在minStack当中是否存在,需要和栈顶元素进行比较,如果相等,minstack和stack都需要出栈*/
//首先需要两个栈,一个stack  一个minStackclass getMinStack{private Stack<Integer> stack;private Stack<Integer> minStack;public getMinStack(){this.stack = new Stack<>();this.minStack = new Stack<>();}public void push(int x) {//stack里面每一次都会存放数据stack.push(x);//如果minStack里面为空,那么直接将这个数据存放进去if (minStack.empty()) {minStack.push(x);} else {//如果不为空,将这个数据和minStack栈顶元素进行比较,如果x<=minStack.peek(),那么直接放进去if (x <= minStack.peek()) {minStack.push(x);}}}//查看栈顶元素并且删除//stack中每次弹出的数据需要和minStack中的栈顶元素比较,因为如果Stack中要弹出的数据和minStack的数据一样//那么minStack中栈顶元素也需要弹出,因为他的最小值发生了变化public void pop() {if(!stack.empty()) {int e = stack.pop();if (e == minStack.peek()) {e = minStack.pop();}}}
//获取栈顶元素,但是不删除public int top() {if (stack.isEmpty()) {throw new RuntimeException("栈为空");}return stack.peek();}public int getMin() {return minStack.peek();}
}

LeetCode——最小栈相关推荐

  1. Leetcode 最小栈问题

    今天在Leetcode刷了一道关于最小栈的问题,题目如下: 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) – 将元素 x 推入栈中. pop() ...

  2. Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)

    ** Leetcode刷题 155题: 最小栈(基于python3和c++两种语言) ** ** 题目: ** 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. ...

  3. 《LeetCode力扣练习》第155题 最小栈 Java

    <LeetCode力扣练习>第155题 最小栈 Java 一.资源 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack ...

  4. LeetCode篇之栈:155(常数时间复杂度内找最小栈)

    LeetCode篇之栈:155-->最小栈 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 源码: typedef struct Linknode{int data;int min;s ...

  5. 【LeetCode】【HOT】155. 最小栈(辅助栈)

    [LeetCode][HOT]155. 最小栈 文章目录 [LeetCode][HOT]155. 最小栈 package hot;import java.util.ArrayDeque; import ...

  6. leetcode系列-155.最小栈

    leetcode系列–第155题.最小栈 题目描述: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack 类: MinStack() 初始化 ...

  7. LeetCode第155题—最小栈

    本次写的题目是最小栈,为LeetCode里面的题目,让我们来康康是如何解出这道题目的吧,各位尚没有思路的小伙伴可以跟随着博主的解题思路一步步来,感受一下

  8. leetcode 155. 最小栈

    难度:简单 频次:59 题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈. 实现 MinStack 类: MinStack() 初始化堆栈对象. void ...

  9. LeetCode:155. 最小栈

    题目链接 155.最小栈 题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. ...

最新文章

  1. 设置透明色有残留怎么办_无尘车间装修,无尘车间内部光线不好怎么办?
  2. 【STM32】通用定时器(TIM2到TIM5)
  3. php 图片上传预览(转)
  4. 自定义负载均衡策略:
  5. 判断是否为自然数java_java判断输入的是否是自然数
  6. WordPress更改“固定链接”后 页面404原因及解决方法(Nginx版)
  7. python可视化工具bokeh_浅谈python可视化包Bokeh
  8. JAVA程序员代表大众车,C++程序员代表捷豹,看看各类程序员们代表着什么车
  9. python exec函数_Python3
  10. MySQL高级进阶(三)、InnoDB存储引擎详解
  11. 微信小程序云开发教程-墨刀原型工具入门
  12. PHP集成环境MxSrvs如何安装pcntl扩展
  13. SMTP协议?SMTP端口号?SMTP服务器?
  14. SpringBoot集成ckfinder3.5.1
  15. 永续合约短线交易技巧?
  16. 德蕾莎修女---一个伟大的人
  17. 【2012年,当我回首来时路】
  18. Dom——隔行变色、分时显示问候语
  19. 【长更】一句话题解(组队训练的俄罗斯题、oj、camp)
  20. 双核Linux内核的引导

热门文章

  1. Linux静态库与动态库
  2. php递归面包屑,php实现面包屑导航例子分享,_PHP教程
  3. qpython能使用json吗l_[python] 详解Python在使用JSON时需要注意的编码问题
  4. ifconfig没有ip地址_虚拟机创建后该如何获取IP地址并访问互联网实用教程
  5. 信息化项目甲方采购的准备与实施
  6. 20. 利用Veeam ONE监控vSphere虚拟化平台(Veeam ONE安装及配置)
  7. Spring Cloud与微服务学习总结(6)——认证鉴权与API权限控制在微服务架构中的设计与实现(四)
  8. Dubbo学习总结(1)——Dubbo入门基础与实例讲解
  9. 构造函数 返回值_JavaScript构造函数的简单介绍
  10. 北斗b2频点频率_北斗系统中“三”的奥秘