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-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门