2019独角兽企业重金招聘Python工程师标准>>>

题目描述:

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

输入:

输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数。
接下来有n行,每行开始有一个字母Ci。
Ci=’s’时,接下有一个数字k,代表将k压入栈。
Ci=’o’时,弹出栈顶元素。

输出:

对应每个测试案例中的每个操作,
若栈不为空,输出相应的栈中最小元素。否则,输出NULL。

样例输入:

7
s 3
s 4
s 2
s 1
o
o
s 0

样例输出:

3
3
2
1
2
3
0

解:注意首先要求是一个栈,即先进后出

解题思路:使用两个栈,一个是普通的数据栈,data,和另外一个help辅助栈,首先在空的时候都压入两个栈,然后对于压入的序列,比较 这个元素和辅助栈栈顶元素,如果小于这个栈顶那么在压入数据栈的时候也压入辅助站,否则,将辅助栈的顶部元素再次压入一次,这样保证了两个栈的大小相等, 这样才能在pop的时候同步。这样需要的空间就是两个相等的栈 。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Stack;
/*** 两个栈方法* @author aqia358**/
public class Main {public Stack<Integer> data = new Stack<Integer>();public Stack<Integer> help = new Stack<Integer>();public void push(int value){data.push(value);if(help.isEmpty()){help.push(value);System.out.println(value);}else{int temp = help.peek();if(temp < value){help.push(temp);System.out.println(temp);}else{help.push(value);System.out.println(value);}}}public void pop(){if(help.isEmpty()){System.out.println("NULL");}else{data.pop();help.pop();if(help.isEmpty()){System.out.println("NULL");}elseSystem.out.println(help.peek());}}public static void main(String[] args) throws IOException {StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));while(st.nextToken() != StreamTokenizer.TT_EOF){int n = (int)st.nval;Main m = new Main();for(int i = 0; i < n; i++){st.nextToken();String op = st.sval;if(op.equals("s")){st.nextToken();int data = (int)st.nval;m.push(data);}else if(op.equals("o")){m.pop();}}}}
}

转载于:https://my.oschina.net/u/1182234/blog/186989

【九度OJ1522】|【剑指offer21】包含min函数的栈相关推荐

  1. 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)

    描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop.top 和 min 函数操作时,栈中一定有元素. 此栈包含的方法有: push(value ...

  2. python剑指offer 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution:def _ ...

  3. 剑指Offer 包含min函数的栈

    时间限制:1秒 空间限制:32768K 热度指数:158697 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 给出代码: cla ...

  4. 剑指offer 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 先介绍一下java.util.Stack.peek()方法实例: 下面的例子显示java.util.Stack.pee ...

  5. 剑指offer---包含min函数的栈

    题目:包含min函数的栈 要求:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). class Solution { public:void pus ...

  6. 剑指Offer-Python-包含min函数的栈

    题目:包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路:占了python的便宜,直接用min()函数. # -*- co ...

  7. 剑指Offer30-包含min函数的栈(单调栈)

    问题描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinStack minStac ...

  8. 剑指offer-包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 思路 把每次的最小元素(之前的最小元素和新压入战的元素两者的较小值)都保存起来放到另外一个辅助栈里. 如果每次都把最小 ...

  9. 【简洁写法】剑指 Offer 30. 包含min函数的栈

    立志用最少的代码做最高效的表达 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例: MinSt ...

  10. 【LeetCode】剑指 Offer 30. 包含min函数的栈

    [LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...

最新文章

  1. 每日一皮:听说学琵琶的都很文弱...
  2. 交互,真的没有你想象的那么重要
  3. ITK:遮盖一张图像给定标签图
  4. JS的对象及其属性和方法
  5. Android Sdk 国内镜像下载地址
  6. PHP 读取 QQ ip纯真数据库 详解
  7. java 音频 api_Java中的接口
  8. XP计算机里改单核,XP中多核处理器只显示单核
  9. SQL Server 时间戳与时间格式互相转换
  10. Atlas 调用web service
  11. 用java做一个小游戏源代码_用java编写的小游戏源代码分析
  12. 《大侦探皮卡丘》天龙八部在路上
  13. 第九届信号与图像处理国际学术研讨会(CSIP 2022)
  14. 记一次瞬时网络挂起和XMLHttpRequest: 网络错误 0x2eff
  15. OGG故障集锦(一)
  16. 问题 J: 亚运会旗帜
  17. 航运大数据——机遇和挑战
  18. 用Mybatis实现添加用户
  19. 得力打印机Android,得力打印机技术填补国内空白
  20. sql位运算符【(位与)、~(位非)、|(位或)、^(位异或)】与位移

热门文章

  1. paip.获取地理位置根据Ip
  2. AIS家电行业供应链管理系统综合分析-零部件订货对应分析需求
  3. (转)深度解析挖矿的逻辑和技术实现
  4. 阿里李飞飞:云原生分布式数据库面临哪些机遇与挑战?
  5. 【优化算法】白冠鸡优化算法(COOT)【含Matlab源码 1795期】
  6. 【光学】基于matlab GUI带切趾的光线布拉格光栅滤波特性仿真【含Matlab源码 1505期】
  7. 【图像加密】基于matlab GUI混沌系统灰色图像加密解密(带面板)【含Matlab源码 1240期】
  8. 关于码云的一些基本知识_关于葡萄酒,你必须知道的一些基础知识
  9. matplotlib——饼状图pie函数
  10. 无法启动mysql server问题:“1067”进程意外终止