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

栈----2.最小栈

155. 最小栈 - 力扣(LeetCode)

/**

        相较于传统的栈额外需要常数级时间复杂度获取栈中最小值

        双栈法:

            主栈,普通栈的功能,push、pop、top均在主栈进行

            辅助栈,记录当前状态主栈的最小值,即每当主栈状态发生改变时,辅助栈也要做相应更改

        辅助栈:

            push操作: 判断push后主栈的最小值,即辅助栈栈顶元素与待添加元素相比,将较小的值加入辅助栈中

            pop操作: 辅助栈也做相应pop操作,即减少一个状态

*/

class MinStack {/**相较于传统的栈额外需要常数级时间复杂度获取栈中最小值双栈法:主栈,普通栈的功能,push、pop、top均在主栈进行辅助栈,记录当前状态主栈的最小值,即每当主栈状态发生改变时,辅助栈也要做相应更改辅助栈:push操作: 判断push后主栈的最小值,即辅助栈栈顶元素与待添加元素相比,将较小的值加入辅助栈中pop操作: 辅助栈也做相应pop操作,即减少一个状态*///主栈private Deque<Integer> stack;//辅助栈private Deque<Integer> minStack;public MinStack() {stack = new ArrayDeque<>();minStack = new ArrayDeque<>();}//主栈直接添加,辅助栈保存当前状态主栈最小值public void push(int val) {//主栈直接添加元素stack.push(val);//辅助栈添加当前主栈状态的最小值if(minStack.isEmpty() || val <= minStack.peek()) {minStack.push(val);} else {minStack.push(minStack.peek());}}//删除主栈元素的同时,弹出主栈顶部元素public void pop() {stack.pop();minStack.pop();}public int top() {return stack.peek();}public int getMin() {return minStack.peek();}
}/*** 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.dtcms.com/a/299892.html

相关文章:

  • S7-200 SMART 数字量 I/O 组态指南:从参数设置到实战案例
  • OpenFeign-远程调用
  • 解决英文版Windows10安装WireShark报错
  • 秋招Day19 - 分布式 - 分布式设计
  • MySQL事务原理
  • C 与 C++ 的区别:发展、特性及优缺点详解
  • [1+2cos(ω)+2cos(2ω)+……+2cos(Nω)]sin(ω/2)=sin[(ω+1/2)N]
  • 【学习路线】Linux从入门到精通:系统化学习路线指南
  • 亚马逊测评采购:如何打造安全的环境,技术基础关键
  • Linux应用开发基础知识——Framebuffer应用编程(六)
  • 栈算法之【有效括号】
  • 在Word和WPS文字中要同时查看和编辑一个文档的两个地方?拆分窗口
  • 《Moco: Momentum Contrast for Unsupervised Visual Representation Learning》论文精读笔记
  • 固态硬盘SSD简介
  • 数字孪生映射探索驱动的具身导航!MorphoNavi:面向对象映射的空地机器人导航
  • Datawhale AI数据分析 作业3
  • 【深度学习新浪潮】什么是GUI Agent?
  • SpringMVC的请求执行流程是什么样的?
  • Houdini快速模拟烟雾
  • Tm.sys是什么文件
  • WLAN网络分类与详细对比
  • Unity 实现帧率(FPS)显示功能
  • Paimon Consumer机制解析
  • 守护汽车“空中升级“:基于HSM/KMS的安全OTA固件签名与验证方案
  • 通过redis_exporter监控redis cluster
  • 1. Qt多线程开发
  • JavaEE初阶第十一期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(九)
  • 第10篇:实战验收篇
  • 无需云服务器的内网穿透方案 -- cloudflare tunnel
  • 特产|基于SSM+vue的南阳特产销售平台(源码+数据库+文档)