Leetcode: 232. Implement Queue using Stacks 两个栈实现队列
发布日期:2021-09-14 15:32:58
浏览次数:19
分类:技术文章
本文共 1271 字,大约阅读时间需要 4 分钟。
Implement Queue using Stacks两个栈实现队列
使用栈实现队列的下列操作:
- push(x) – 将一个元素放入队列的尾部。
- pop() – 从队列首部移除元素。
- peek() – 返回队列首部的元素。
- empty() – 返回队列是否为空。
方法1:入队O(n),出队O(1)
class MyQueue { public: MyQueue() { } void push(int x) { stack tmp; while (!st.empty()) { tmp.push(st.top()); st.pop(); } st.push(x); while (!tmp.empty()) { st.push(tmp.top()); tmp.pop(); } } int pop() { int val = st.top(); st.pop(); return val; } int peek() { return st.top(); } bool empty() { return st.empty(); } private: stack st;};
方法2:入队O(1),出队O(1) 摊还复杂度
class MyQueue { public: MyQueue() { } void push(int x) { s1.push(x); } int pop() { shiftStack(); int val = s2.top(); s2.pop(); return val; } int peek() { shiftStack(); return s2.top(); } bool empty() { return s1.empty()&&s2.empty(); } void shiftStack() { //将s1的所有元素弹出到s2,再从s2中弹出。 if (!s2.empty()) return; while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } }private: stack s1,s2;};
转载地址:https://blog.csdn.net/weixin_42490152/article/details/100941465 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年03月27日 22时28分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
与 DevOps 面对面
2019-04-27
CPU占用又爆了?MySQL到底在干什么
2019-04-27
招贤纳士-第17期,来自北京,西安的职位
2019-04-27
秋招拿了7个offer,分享一些反思和经验
2019-04-27
一文带你深扒ClassLoader内核,揭开它的神秘面纱!
2019-04-27
看GitHub 2020年度报告有感
2019-04-27
MySQL如何管理客户端连接?线程池篇
2019-04-27
VScode 折叠函数快捷键 合上函数
2019-04-27
domoticz智能家居系统 MQTT 异常以及解决方法 code=14
2019-04-27
lua语言笔记--注册dll内的函数到全局,lua 全局函数的注册
2019-04-27
工作笔记::lua 打印 一个table的方法
2019-04-27
工作笔记::VSCode使用笔记--VSCode 设置自定义快捷键 设置自定义运行脚本
2019-04-27
modbus调试工具开发(1)--windows下编译libmodbus库文件
2019-04-27
工作笔记-- 嵌入式linux设备的端口回收设置
2019-04-27
工作笔记--batch脚本语言的使用随笔--嵌入式linux的一种开发方法的介绍
2019-04-27
工作笔记 -- AltiumDesigner20 设置铺铜改变之后自动重新铺铜方法
2019-04-27