以空间换时间:

package leetcode.sword_to_offfer.day01;

import java.util.Stack;

/**
* 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
* <p>
* 示例:
* <p>
* MinStack minStack = new MinStack();
* minStack.push(-2);
* minStack.push(0);
* minStack.push(-3);
* minStack.min(); --> 返回 -3.
* minStack.pop();
* minStack.top(); --> 返回 0.
* minStack.min(); --> 返回 -2.
* <p>
* <p>
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.min();
*
* @author soberw
* @Classname MinStack
* @Description
* @Date 2022-02-07 9:16
*/
public class MinStack {
private final Stack<Integer> st;
private int minValue = Integer.MAX_VALUE; //存放最小值 /**
* initialize your data structure here.
*/
public MinStack() {
st = new Stack<>();
} public void push(int x) {
st.push(minValue); //存入当前最小值
minValue = Math.min(x, minValue); //保证当前minValue最小
st.push(x); // 存入数据
} public void pop() {
st.pop(); //出栈
minValue = st.pop(); //存放的最小值出栈
} public int top() {
return st.peek();
} public int min() {
return minValue;
}
}

简单示意图:

剑指Offer系列_30_包含min函数的栈的更多相关文章

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

    总结 1. 要求栈的 push, pop, min 都是 o(1). 普通栈支持 Push Pop 操作, 且时间复杂度已为 o(1), 再加上 Min 函数, 时间复杂度已无法优化, 只能通过加空间 ...

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

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 解题思路 要求在O(1)时间内完成,由于栈后进先出的原则,不能出现破坏栈结构的事情.因 ...

  3. 剑指offer-面试题21.包含min函数的栈

    题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数. 在该栈中,调用min,push及pop的时间复杂度都是O(1). 这一题实际上需要一个辅助栈存储最小值: 1.在模板类定 ...

  4. 剑指offer-面试题30-包含min函数的栈-栈

    /* 题目: 定义栈的数据结构,实现一个能够得到栈的最小元素的min函数. */ /* 思路: 错误思路:每次保存当前最小的元素,如果当前最小元素弹出,最小元素是谁? 正确思路:两个栈,一个栈保存数据 ...

  5. 剑指Offer(二十):包含min函数的栈

    剑指Offer(二十):包含min函数的栈 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ba ...

  6. 《剑指offer》 包含min函数的栈

    本题来自<剑指offer> 包含min函数的栈 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路: 举例子让抽象问题具体 ...

  7. 剑指Offer - 九度1522 - 包含min函数的栈

    剑指Offer - 九度1522 - 包含min函数的栈2013-12-01 23:44 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 输入: 输入可能包含多个测 ...

  8. 剑指 Offer 30. 包含min函数的栈 + 双栈实现求解栈中的最小值

    剑指 Offer 30. 包含min函数的栈 Offer_30 题目描述: 题解分析: 题目其实考察的是栈的知识,本题的目的是使用两个栈来求解最小值. 第二个栈主要用来维护第一个栈中的最小值,所以它里 ...

  9. 剑指 Offer 30. 包含min函数的栈

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

随机推荐

  1. 从Base64编码转换为图片文件

    package luckyclient.utils;import java.io.FileInputStream;import java.io.FileOutputStream;import java ...

  2. .Net 线程安全集合

    .Net 提供了基于生产-消费模式的集合类,这些集合对多线程访问安全,定义在System.Collections.Concurrent名称空间中.这个名称空间中包括基础接口IProduceConsum ...

  3. fastjson字符串转JSON的$ref问题

    先说结论: fastjson在把对象转换成字符串的时候,如果遇到相同的对象的时候,默认开启引用检测将相同的对象写成引用的形式. 官网文档:https://github.com/alibaba/fast ...

  4. Pyomo+GLPK使用

    Pyomo下载安装 GLPK的下载和安装参考上一篇博客. mkdir Pyomo cd Pyomo wget https://github.com/Pyomo/pyomo/archive/5.6.6. ...

  5. JavaScript中数字常用方法

    数字常用方法 (1)返回0-1(不包含1)随机小数(random()) 格式:Math.random() var num=parseInt(Math.random()*11) //拿到0-10中的随机 ...

  6. 【一个idea】YesSql,一种在经典nosql数据库redis上实现SQL引擎的方案(我就要开历史的倒车)

    公众号链接 最高级的红酒,一定要掺上雪碧才好喝. 基于这样的品味,我设计出了一套在经典nosql数据库redis上实现SQL引擎的方法.既然redis号称nosql,而我偏要把SQL加到redis上, ...

  7. unity3d C# soket客户端接受失败

    using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using S ...

  8. 使用 ES Module 的正确姿势

    前面我们在深入理解 ES Module 中详细介绍过 ES Module 的工作原理.目前,ES Module 已经在逐步得到各大浏览器厂商以及 NodeJS 的原生支持.像 vite 等新一代的构建 ...

  9. Maven常用设置

    1,maven属性设置 <properties>设置maven的常用属性 <properties> 属性设置 <!--maven构建项目使用编码,避免中文乱码--> ...

  10. a 标签一些特殊用法

    发邮件 <a href="mailto:youemail@mail.com?subject=邮件标题&body=邮件内容">告诉我们</a> 打电话 ...