题目描述

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

思路

把每次的最小元素(之前的最小元素和新压入战的元素两者的较小值)都保存起来放到另外一个辅助栈里。

如果每次都把最小元素压入辅助栈, 那么就能保证辅助栈的栈顶一直都是最小元素.当最小元素从数据栈内被弹出之后,同时弹出辅助栈的栈顶元素,此时辅助栈的新栈顶元素就是下一个最小值。

 Stack<Integer> dataStack = new Stack<Integer>();  // 数据栈Stack<Integer> minStack = new Stack<Integer>();   // 辅助栈public void push(int node) {dataStack.push(node);if(minStack.isEmpty() || minStack.peek() > node ) {minStack.push(node);} else {minStack.push(minStack.peek());}  }public void pop() {if(!dataStack.isEmpty() && !minStack.isEmpty()) {dataStack.pop();minStack.pop();}}public int min() {int min = 0;if(!dataStack.isEmpty() && !minStack.isEmpty()) {min = minStack.peek();}return min;}

转载于:https://www.cnblogs.com/zywu/p/5775098.html

剑指offer-包含min函数的栈相关推荐

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

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

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

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

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

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

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

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

  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 30. 包含min函数的栈

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

  9. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

最新文章

  1. github 搜索_因为这个工具,我在 GitHub 搜索源码的时间缩短了 50%!
  2. POJ2299 树状数组求逆序对
  3. vscode可以打开jupyternotebook吗_刚刚,官方宣布 VS Code 支持 Python 全开发了!
  4. 如何实现Oracle数据库之间的数据同步?
  5. 用mac的python写网络爬虫_在mac下使用python抓取数据
  6. 使用Apache FtpServer
  7. 【map分组求和】map集合根据某一key分组,再对某一key对应的所有值求和
  8. leetcode python3 简单题35. Search Insert Position
  9. 网站域名备案时需要什么资料
  10. jdbc 4.0连接mysql_使用JDBC连接操作数据库
  11. The requested PHP extension ext-redis * is missing from your system. Install or enable PHP's redis e
  12. 云计算的小兄弟:雾计算和霾计算
  13. 数据持久层框架Mybatis
  14. ILSVRC2015-VID数据集结构一览图
  15. Unity Input键盘输入无反应
  16. Nginx常用rewrite跳转重定向实例
  17. 【踩坑日记 · 前端】为 Excalidraw 添加中文手写字体
  18. 构造器(有参、无参)
  19. weblogic BEA-170011
  20. 铃铛子训练营 | 我的感悟(二)

热门文章

  1. 阿里员工 1 天有 26 个小时,怎么回事?
  2. 如何打造“智能助理”?阿里对话开发平台这样做
  3. 万万没想到,枯燥的“机器学习”还可以这样学!
  4. 关于游戏烂代码的那些事(下)
  5. springboot 打jar 包部署时 读取外部配置文件
  6. preg_grep用法
  7. Oracle之AUTHID CURRENT_USER
  8. copy_{to, from}_user()的思考
  9. Java模板引擎之freemarker简介
  10. 深入浅出MySQL事务处理和锁机制