数据结构 -- 栈
1. 实现一个栈,可以在最小时间复杂度内计算出栈中的最小值。空间复杂度无视。
package lime.xiaoniu; import java.util.Iterator; import java.util.Stack; /** * 实现一个栈,可以在最小时间复杂度内计算出栈中的最小值。空间复杂度无视。 */ public class DevilStack { public static void main(String[] args){ DevilStack stack = new DevilStack(); for(int i = 10;i > 0;i--){ stack.push((int)(Math.random() * 100)); } stack.inOrder(); while (!stack.isEmpty()){ System.out.println("mixStackPop : " + stack.peekMixData() + " dataStackPop : " + stack.pop()); } } private Stack<Integer> dataStack = new Stack<Integer>(); private Stack<Integer> mixStack = new Stack<Integer>(); private Integer mixData = Integer.MAX_VALUE; public boolean push(Integer data){ if(null == data){ return false; } dataStack.push(data); mixStack.push(mixData = Math.min(mixData,data)); return true; } public Integer pop(){ if(dataStack.isEmpty()){ return null; } mixStack.pop(); return dataStack.pop(); } public Integer peekMixData(){ if(dataStack.isEmpty()){ return null; } return mixStack.peek(); } public void inOrder(){ if(dataStack.isEmpty()){ return; } Iterator<Integer> iterator = dataStack.iterator(); System.out.print("dataStack : " ); for(;iterator.hasNext();){ System.out.print(iterator.next() + " "); } System.out.print("\nmixStack : "); for(iterator = mixStack.iterator();iterator.hasNext();){ System.out.print(iterator.next() + " "); } System.out.println(); } public boolean isEmpty(){ return dataStack.isEmpty(); } }
啦啦啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决