Day14: 包含min函数的栈

embedded/2025/3/13 8:30:03/

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

实现 MinStack 类:

  • MinStack() 初始化堆栈对象。
  • void push(int val) 将元素val推入堆栈。
  • void pop() 删除堆栈顶部的元素。
  • int top() 获取堆栈顶部的元素。
  • int getMin() 获取堆栈中的最小元素。

LCR 147. 最小栈 - 力扣(LeetCode)

第一遍的代码:

java">class MinStack {Stack<Integer> stack;Stack<Integer> topMin;/** initialize your data structure here. */public MinStack() {stack = new Stack<>();topMin = new Stack<>();  }public void push(int x) {if(stack.isEmpty()){topMin.push(x);stack.push(x);}else{if(x <= topMin.peek()){topMin.push(x);} stack.push(x);}}public void pop() {if(stack.pop() == topMin.peek()){topMin.pop();} }public int top() {return stack.peek();}public int getMin() {return topMin.peek();}
}/*** 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.getMin();*/

发现在

["MinStack","push","push","push","push","pop","getMin","pop","getMin","pop","getMin"]

[[],[512],[-1024],[-1024],[512],[],[],[],[],[],[]] 

的用例中出错。

这里的问题是:

  1. == 比较的是引用Integer 是对象类型,== 比较的是对象的引用,而不是值。如果栈中的元素是通过自动装箱(autoboxing)生成的 Integer 对象,== 可能会返回 false,即使值相同。

  2. 推荐使用 equals() 方法:对于对象类型的比较,应该使用 equals() 方法来比较值。

java">class MinStack {Stack<Integer> stack;Stack<Integer> topMin;/** initialize your data structure here. */public MinStack() {stack = new Stack<>();topMin = new Stack<>();  }public void push(int x) {if(stack.isEmpty()){topMin.push(x);stack.push(x);}else{if(x <= topMin.peek()){topMin.push(x);}stack.push(x);}}public void pop() {if(stack.pop().equals(topMin.peek())){topMin.pop();} }public int top() {return stack.peek();}public int getMin() {return topMin.peek();}
}


http://www.ppmy.cn/embedded/172191.html

相关文章

unity使用mesh 画图(1)

plane 圆 空心椭圆 椭圆 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class DrawMeshManager {static DrawMeshManager instance;public static DrawMeshManager Instance {get {if (instance ! null){retu…

制作windows完整复制模板

目录 一、安装windows 10 二、启用超管 三、安装HDA 四、封装系统 五、转模板 六、FA配置模板 配置思路步骤如下&#xff1a; 安装win10&#xff08;专业版&#xff09;&#xff0c;启用本地超管administrator&#xff0c;并用本地超管操作安装tools&#xff0c;关闭防火…

Docker基础篇——Ubuntu下Docker安装

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起进行Docker安装。 Docker的官方Ubuntu安装文档&#xff0c;如…

Java 大视界 -- Java 大数据在智能安防视频摘要与检索技术中的应用(128)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

使用Open WebUI下载的模型文件(Model)默认存放在哪里?

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Ollama部署LLM专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月21日21点21分 &#x1f004;️文章质量&#xff1a;95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…

LabVIEW变频器谐波分析系统

随着工业自动化的发展&#xff0c;变频器在电力、机械等领域的应用日益广泛&#xff0c;但谐波问题直接影响系统效率与稳定性。传统谐波检测设备&#xff08;如Norma5000&#xff09;精度虽高&#xff0c;但价格昂贵且操作复杂&#xff0c;难以适应现场快速检测需求。本项目基于…

【NLP 36、CRF条件随机场 —— 源码解读】

目录 一、CRF —— 条件随机场&#xff1a; 1.CRF - 转移矩阵 2.发射矩阵 3.结合发射矩阵和转移矩阵 4.CRF —— Loss定义 二、CRF —— 源码解读 1.初始化CRF模块 2.随机初始化CRF参数 3.前向计算 4.维特比算法解码 5.验证输入张量 6.计算分数 7.计算归一化因子 8.解码标签序…

linux---天气爬虫

代码概述 这段代码实现了一个天气查询系统&#xff0c;支持实时天气、未来天气和历史天气查询。用户可以通过终端菜单选择查询类型&#xff0c;并输入城市名称来获取相应的天气信息。程序通过 TCP 连接发送 HTTP 请求&#xff0c;并解析返回的 JSON 数据来展示天气信息。 #in…