博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java最小栈
阅读量:4135 次
发布时间:2019-05-25

本文共 1231 字,大约阅读时间需要 4 分钟。

/** * 实现一个栈,该栈有出栈(pop),入栈(push)、取最小元素(getMin)3个方法。要保证3个方法都是O(1) * 解法:借助辅助栈,解法见代码说明 * 时间复杂度均为O(1),最大空间复杂度为O(n) */public class MinStack {    private Stack
mainStack = new Stack(); private Stack
minStack = new Stack(); /** * 入栈操作 * @param data */ public void push(int data){ mainStack.push(data); //如果辅助栈为空,或者新元素小于或等于辅助栈栈顶,则将新元素压入到辅助栈 if(minStack.isEmpty() || minStack.peek() > data){ minStack.push(data); } } /** * 出栈操作 */ public Integer pop(){ //如果出栈元素和辅助栈元素值相等,辅助栈出栈 if(mainStack.peek().equals(minStack.peek())){ minStack.pop(); } return mainStack.pop(); } /** * 获取栈中最小数 * @return */ public Integer getMin(){ if(!minStack.isEmpty()){ return minStack.peek(); } return null; } public static void main(String[] args) { MinStack stack = new MinStack(); stack.push(4); stack.push(9); stack.push(7); stack.push(3); stack.push(8); stack.push(5); System.out.println(stack.getMin()); stack.pop(); stack.pop(); stack.pop(); System.out.println(stack.getMin()); }}

 

转载地址:http://sqsvi.baihongyu.com/

你可能感兴趣的文章
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>