
剑指 Offer 09. 用两个栈实现队列
入队操作:将元素加入到入队栈(stackA)。 出队操作:
发布日期:2021-05-12 21:18:21
浏览次数:22
分类:精选文章
本文共 765 字,大约阅读时间需要 2 分钟。
利用两个栈来实现队列的操作,我们可以利用栈的特性来模拟队列的先进先出的特性。以下是实现步骤:
- 如果出队栈(stackB)不为空,直接弹出栈顶元素。
- 否则,将入队栈的所有元素倒序移到出队栈(stackB),然后弹出栈顶元素。如果出队栈仍为空,则说明队列为空,返回-1。
这种方法高效且直观,充分利用了栈的先进后出特性来实现队列的先进先出功能。
以下是优化后的完整代码:
CQueue = function() { this.stackA = []; this.stackB = [];};CQueue.prototype.appendTail = function(value) { this.stackA.push(value);};CQueue.prototype.deleteHead = function() { if (this.stackB.length > 0) { return this.stackB.pop(); } else { while (this.stackA.length > 0) { this.stackB.push(this.stackA.pop()); } if (this.stackB.length === 0) { return -1; } else { return this.stackB.pop(); } }};
这个实现确保了队列操作的高效性,能够在O(1)平均时间复杂度内完成入队和出队操作。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月08日 18时45分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java多线程
2019-03-07
Unity监听日记
2019-03-07
AndroidStudio跳到错误位置
2019-03-07
openssl服务器证书操作
2019-03-07
expect 模拟交互 ftp 上传文件到指定目录下
2019-03-07
linux系统下双屏显示
2019-03-07
PDF.js —— vue项目中使用pdf.js显示pdf文件(流)
2019-03-07
我用wxPython搭建GUI量化系统之最小架构的运行
2019-03-07
我用wxPython搭建GUI量化系统之多只股票走势对比界面
2019-03-07
selenium+python之切换窗口
2019-03-07
重载和重写的区别:
2019-03-07
搭建Vue项目步骤
2019-03-07
账号转账演示事务
2019-03-07
idea创建工程时错误提醒的是architectCatalog=internal
2019-03-07
SpringBoot找不到@EnableRety注解
2019-03-07
简易计算器案例
2019-03-07
在Vue中使用样式——使用内联样式
2019-03-07
Explore Optimization
2019-03-07
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
2019-03-07