下面题目是LeetCode算法155题: https://leetcode.com/problems/min-stack/

题目1:最小函数min()栈

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

  • push(x) -- 将元素 x 推入栈中。
  • pop() -- 删除栈顶的元素。
  • top() -- 获取栈顶元素。
  • getMin() -- 检索栈中的最小元素。
  1. package com.good.good.study.stack;
  2.  
  3. import java.util.Stack;
  4.  
  5. /**
  6. * ###155题.设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
  7. * push(x) -- 将元素 x 推入栈中。
  8. * pop() -- 删除栈顶的元素。
  9. * top() -- 获取栈顶元素。
  10. * min() -- 检索栈中的最小元素。
  11. * @author monkjavaer
  12. * @date 2018/09/11 21:44
  13. */
  14. public class MinStack {
  15. /**
  16. * 真正存放数据栈
  17. */
  18. public static Stack<Integer> stack = new Stack<>();
  19.  
  20. /**
  21. * 存放最小数栈
  22. */
  23. public static Stack<Integer> minStack = new Stack<>();
  24.  
  25. /**
  26. * push 放入元素
  27. * @param data
  28. */
  29. public void push(int data) {
  30. stack.push(data);
  31. if (minStack.size()==0||data<minStack.peek()){
  32. minStack.push(data);
  33. }else {
  34. minStack.push(minStack.peek());
  35. }
  36. }
  37.  
  38. /**
  39. * 获取栈顶元素
  40. * @return
  41. */
  42. public int top() {
  43. return stack.peek();
  44.  
  45. }
  46.  
  47. /**
  48. * pop 推出元素
  49. * @return
  50. * @throws Exception
  51. */
  52. public int pop() throws Exception {
  53. minStack.pop();
  54. return stack.pop();
  55. }
  56.  
  57. /**
  58. * min 最小函数,调用该函数,可直接返回当前AntMinStack的栈的最小值
  59. *
  60. * @return
  61. * @throws Exception
  62. */
  63. public int min() throws Exception {
  64. return minStack.peek();
  65. }
  66.  
  67. public static void main(String[] args){
  68. MinStack antMinStack = new MinStack();
  69. antMinStack.push(2);
  70. antMinStack.push(1);
  71. antMinStack.push(8);
  72. antMinStack.push(9);
  73. antMinStack.push(1);
  74. try {
  75. System.out.println("最小值:"+antMinStack.min());
  76. antMinStack.pop();
  77. antMinStack.pop();
  78. System.out.println("最小值:"+antMinStack.min());
  79. } catch (Exception e) {
  80. e.printStackTrace();
  81. }
  82.  
  83. }
  84.  
  85. }

  

  

 

leetcode算法学习----155. 最小栈(MinStack )的更多相关文章

  1. Java实现 LeetCode 155 最小栈

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

  2. 【LeetCode】155. 最小栈

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

  3. leetcode算法学习----逆波兰表达式求值(后缀表达式)

    下面题目是LeetCode算法:逆波兰表达式求值(java实现) 逆波兰表达式即后缀表达式. 题目:  有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式.同 ...

  4. leadcode的Hot100系列--155. 最小栈

    栈:先入后出,后入先出 像电梯一样,先进入电梯的,走到电梯最深处,后进入电梯的,站在电梯门口, 所以电梯打开的时候,后进入的会先走出来,先进入的会后走出来. push,对应入电梯,把数据往里面压 po ...

  5. LeetCode 155 - 最小栈 - [数组模拟栈]

    题目链接:https://leetcode-cn.com/problems/min-stack/description/ 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的 ...

  6. LeetCode 刷题笔记 155. 最小栈(Min Stack)

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

  7. Leetcode题目155.最小栈(简单)

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

  8. leetcode 155. 最小栈(c++)

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

  9. LeetCode——155. 最小栈

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

随机推荐

  1. jsonp 监控简陋代码

    url: window.location.href Agent: navigator.userAgent var tkInfo = { VisitUrl: window.location.href, ...

  2. [Usaco2011 Jan]道路和航线

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

  3. ACM_递推题目系列之一涂色问题(递推dp)

    递推题目系列之一涂色问题 Time Limit: 2000/1000ms (Java/Others) Problem Description: 有排成一行的n个方格,用红(Red).粉(Pink).绿 ...

  4. 转 awr自动收集脚本

    1. remote get awr report #!/usr/bin/ksh ####sample: sh awr.sh 20170515 20170516 AWR ### default it w ...

  5. 窗体基础WINFORM

    winform 1.窗体: 造窗体界面: 窗体设计界面: 窗体类名不能重复! 属性: acceptbutton:回车是默认点击按钮 cancelbutton:按esc按键式默认的按钮 backcolo ...

  6. 专题十一:实现一个基于FTP协议的程序——文件上传下载器

    引言: 在这个专题将为大家揭开下FTP这个协议的面纱,其实学习知识和生活中的例子都是很相通的,就拿这个专题来说,要了解FTP协议然后根据FTP协议实现一个文件下载器,就和和追MM是差不多的过程的,相信 ...

  7. 基于SOC方案的嵌入式开发-远程定时设备

    Soc方案实现简单的定时开关灯 http://club.gizwits.com/forum.php?mod=viewthread&tid=7787&highlight=%E5%AE%9 ...

  8. python实现qq机器人qqbot

    title: python实现qq机器人qqbot tags: python date: 2018-6-1 10:19:00 --- 以下内容为转载 一.介绍 qqbot 是一个用 python 实现 ...

  9. Eclipse开发工具介绍

    Eclipse是一个基于Java的.开放源码的.可扩展的应用开发平台,它为编程人员提供了一流的Java集成开发环境(Integrated Development Environment,IDE).在E ...

  10. docloud后台管理项目(开篇)

    最近朋友做app需要web做后台管理,所以花了一周时间做了这个项目. 废话不多说,开发环境是nginx+php5.3,使用thinkphp框架.是一个医疗器械数据统计的后台,业务功能很简单就是查看用户 ...