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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Leetcode: 46. Permutations 全排列
下一篇:Leetcode: 215. Kth Largest Elements in an Array数组中的第k个最大元素

发表评论

最新留言

逛到本站,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
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库 (未完成版本) 2019-04-27
domoticz智能家居系统 MQTT 异常以及解决方法 code=14 2019-04-27
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库完整版 2019-04-27
lua语言笔记--注册dll内的函数到全局,lua 全局函数的注册 2019-04-27
工作笔记::c++ 运行命令行脚本 启动lua cmd lua 顺序执行多个文件的方法 c++ 开启一个命令行的方法 lua 启动多个文件 2019-04-27
工作笔记::lua 打印 一个table的方法 2019-04-27
工作笔记::VSCode使用笔记--VSCode 设置自定义快捷键 设置自定义运行脚本 2019-04-27
笔记--记录一次在libmodbus通讯过程socket的connect()遇到的Operation now in progress 的bug 2019-04-27
modbus调试工具开发(1)--windows下编译libmodbus库文件 2019-04-27
工作笔记-- 嵌入式linux设备的端口回收设置 2019-04-27
工作笔记--batch脚本语言的使用随笔--嵌入式linux的一种开发方法的介绍 2019-04-27
工作笔记 -- AltiumDesigner20 设置铺铜改变之后自动重新铺铜方法 2019-04-27