当前位置: 首页 > news >正文

【LeetCode】【算法】155. 最小栈

LeetCode 155. 最小栈

题目描述

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。

思路

思路:一个栈,栈内元素存储一个数组实现,其中第一个元素是存储元素值,第二个元素是存储的栈中元素最小值
第一步:定义队列:Deque<int[]> deque;
第二步:MinStack()初始化:deque = new ArrayDeque();
第三步:void push(int val),压入栈时判断需要存储的数组的第二个元素大小:① 如果栈为空,则deque.push(new int[]{val, val}); ② 如果栈不为空,如果deqeue.peek()[1]>val,则deque.push(new int[]{val, val}); 否则deque.push(new int[]{val,deque.peek()[1]});
第四步:void pop(),deque.pop()即可
第五步:int top(),return deque.peek()[0]即可
第六步:int getMin(),return deque.peek()[1]即可

代码

class MinStack {Deque<int[]> deque;public MinStack() {deque = new ArrayDeque<>();}public void push(int val) {if (deque.isEmpty()) {deque.push(new int[]{val, val});} else {int[] peek = deque.peek();if (peek[1] < val) {deque.push(new int[]{val, peek[1]});} else {deque.push(new int[]{val, val});}}}public void pop() {deque.pop();}public int top() {return deque.peek()[0];}public int getMin() {return deque.peek()[1];}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj = new MinStack();* obj.push(val);* obj.pop();* int param_3 = obj.top();* int param_4 = obj.getMin();*/
http://www.lryc.cn/news/478341.html

相关文章:

  • 3.3 windows,ReactOS系统中页面的换出----1
  • QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
  • Linux云计算 |【第五阶段】CLOUD-DAY8
  • 岛屿数量 广搜版BFS C#
  • hive切换表底层文件类型以及分隔符
  • ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较
  • asp.net文件防盗链
  • 【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标
  • 华为杯”第十五届中国研究生数学建模竞赛-B题:光传送网建模与价值评估(续)
  • android 使用xml设置背景图片和圆角
  • 数据结构,问题 E: 表达式括号匹配
  • 国家宠物美容师职业技能等级评价(高级)理论考试题
  • Spring挖掘:(AOP篇)
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第四题
  • 单元测试怎么做
  • 移动应用开发 实验二:标准身高计算器
  • 金华迪加现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现
  • 使用 pd.ExcelWriter 创建多工作表 Excel 文件的详细教程
  • 驱动-----dht11温湿度传感器
  • Docker 基础命令简介
  • 嵌入式开发之静态库和共享库
  • 关于npm源的切换及相关操作
  • vue前端sku实现
  • 使用Vue3和Vue2进行开发的区别
  • 爬虫入门urllib 和 request(二)
  • 【大数据学习 | HBASE】hbase的整体架构
  • 群控系统服务端开发模式-应用开发-个人资料
  • openssl生成加密,公钥实现非对称加密
  • [CKS] K8S Admission Set Up
  • 前端学习Day13 CSS盒子的定位(固定定位篇“附练习”)