剑指Offer - 面试题9. 用两个栈实现队列
发布日期:2021-07-01 03:20:07
浏览次数:2
分类:技术文章
本文共 1085 字,大约阅读时间需要 3 分钟。
1. 题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail
和 deleteHead
,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead
操作返回 -1 )
- 类似题目:
示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"][[],[],[5],[2],[],[]]输出:[null,-1,null,null,5,2]提示:1 <= values <= 10000最多会对 appendTail、deleteHead 进行 10000 次调用
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
- 建立两个栈,
in,out
in
负责进入队列out
负责出队- 出队时,
out
不为空直接弹栈,为空,先将所有的in
,弹出,并压入out
,最后弹出out
的栈顶
class CQueue { int v; stack in; stack out;public: CQueue() { } void appendTail(int value) { in.push(value); } int deleteHead() { if(in.empty() && out.empty()) return -1; if(out.empty() && !in.empty()) { while(!in.empty()) { out.push(in.top()); in.pop(); } } v = out.top(); out.pop(); return v; }};
转载地址:https://michael.blog.csdn.net/article/details/104272589 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月17日 08时18分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Redis
2019-05-02
Python字符编码和转码
2019-05-02
odoo10学习笔记十一:视图综述
2019-05-02
commons-dbutils【不推荐】
2019-05-02
SOCAT端口转发
2019-05-02
docker快速搭建HTTP代理
2019-05-02
jpa的entry审查Auditing
2019-05-02
前端学习 -- 颜色
2019-05-02
前端学习 -- Css -- 盒子模式
2019-05-02
什么是多线程?看我多线程七十二变,你能记住吗?
2019-05-03
Netty hello world 入门源码分析
2019-05-03
Netty 中的 handler 和 Pipeline
2019-05-03
ActiveReports 报表应用教程 (15)---报表换肤
2019-05-03
ActiveReports 报表应用教程 (14)---数据可视化
2019-05-03
在Silverlight中动态绑定页面报表(PageReport)的数据源
2019-05-03
Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
2019-05-03
Spring Cloud构建微服务架构:消息驱动的微服务(入门)【Dalston版】
2019-05-03
Spring Cloud构建微服务架构:分布式服务跟踪(入门)【Dalston版】
2019-05-03
TestNG系列-第四章 testNG之命令行运行及参数详解
2019-05-03
TestNG系列-第五章 测试方法、测试类和测试分组(续1)
2019-05-03