Java算法: 用两个栈实现队列
2022/7/10 14:23:14
本文主要是介绍Java算法: 用两个栈实现队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题
- 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,
分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,
deleteHead 操作返回 -1 )
解决
class CQueue { Stack<Integer> stack1; Stack<Integer> stack2; public CQueue() { stack1=new Stack<Integer>(); stack2=new Stack<Integer>(); } public void appendTail(int value) { //插入整数功能,画图分析可知,stack1只需要储存增加的元素即可 stack1.push(value); } public int deleteHead() { //删除整数功能 if(stack2.isEmpty()){ //如果stack2是空的,就将stack1中的值放到2中,然后再进行删除 while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } } if(stack2.isEmpty()){ //如果将1中的值放到2后,2还是空的话就返回-1 return -1; } else{ //如果将1中的值放到2后,2中存在值的话就删除最上面的元素 return stack2.pop(); } } } /** * Your CQueue object will be instantiated and called as such: * CQueue obj = new CQueue(); * obj.appendTail(value); * int param_2 = obj.deleteHead(); */ // Stack:创建栈 // 栈先进后出、队列先进先出
总结
- 时间复杂度:O(N)
- 遇到栈、树、队列的算法题时要多画图分析,因为他们有其独特的数据结构,画图能够更好的帮助我们分析。
这篇关于Java算法: 用两个栈实现队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解