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

栈----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.xdnf.cn/news/16460.html

相关文章:

  • 单元测试、系统测试、集成测试知识详解
  • 面试150 只出现一次的数字
  • Java I/O知识归纳
  • 字符串操作
  • ESP32实战:5分钟实现PC远程控制LED灯
  • AI Agent笔记--读腾讯技术公众号
  • dify前端应用相关
  • Java中List集合对象去重及按属性去重
  • 学习随想录-- web3学习入门计划
  • Flutter开发实战之路由与导航
  • Flink是如何实现物理分区?
  • 39.Python 中 list.sort() 与 sorted() 的本质区别与最佳实践
  • C语言开发工具Win-TC
  • Python+Selenium+Pytest+POM自动化测试框架封装
  • C++高效实现AI人工智能实例
  • Flutter开发实战之原生平台集成
  • Flutter开发实战之动画与交互设计
  • 06-ES6
  • Ubuntu22.04提示找不到python命令的解决方案
  • Java 注解(Annotation)详解:从基础到实战,彻底掌握元数据驱动开发
  • 微信小程序 自定义带图片弹窗
  • Windows Server容器化应用的资源限制设置
  • 用户中心项目部署上线03
  • 基于FPGA的SPI控制FLASH读写
  • 服务器:数字世界的隐形引擎
  • JavaScript里的string
  • 使用Python实现单词记忆软件
  • Zookeeper的简单了解
  • 兼容性问题记录
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现轮船检测识别(C#代码UI界面版)