当前位置: 首页 > news >正文

day10 用栈实现队列 用队列实现栈

题目1:232 用栈实现队列

题目链接:232 用栈实现队列

题意

两个栈实现先入先出队列(一个入栈,一个出栈),实现如下功能:

1)push:将元素x推到队列末尾

2)pop:从队列的开头移除并返回元素

3)peek:返回队列开头的元素

4)empty:若队列为空,返回true,否则,返回false

代码

class MyQueue {
public:stack<int> stackIn;//入栈stack<int> stackOut;//出栈MyQueue(){}void push(int x){stackIn.push(x);}int pop(){//stackOut出栈为空时,放入元素if(stackOut.empty()){while(!stackIn.empty()){stackOut.push(stackIn.top());stackIn.pop();}}//出栈不为空时,直接弹出元素int result = stackOut.top();stackOut.pop();return result;}int peek(){int result = this->pop();//复用上面的pop()函数,stackOut.push(result);//但是还需要将元素放回出栈中return result;}bool empty(){return (stackIn.empty() && stackOut.empty());}};/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj = new MyQueue();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->peek();* bool param_4 = obj->empty();*/
  • 时间复杂度: push和empty为O(1), pop和peek为O(n)
  • 空间复杂度: O(n)

题目2: 225 用队列实现栈

题目链接:225 用队列实现栈

题意

使用两个队列实现栈,实现如下功能

push:将元素x压入栈顶

pop:移除并返回栈顶的元素

top:返回栈顶的元素

empty:栈为空,返回true,否则,返回false

两个队列

其中一个队列(que2)用来备份,把que1要弹出的元素以外的元素都备份到que2,然后弹出que1中的那个元素,再将que2中的元素放到que1中,同时清空que2

逻辑
例1:que2每次都要清空

每pop一次,que2都要备份一次,一定要是空的,才能接续不断地进行操作,如果不清空的话,有可能已经弹出的元素会再次回到栈中

例2:que2的全部元素都要移动到que1中

因为que2中保存的是当前pop操作que1中没有用到的元素,为了保证后续操作,要将que2中的全部元素移动到que1中。

代码

class MyStack {
public:queue<int> que1;queue<int> que2;MyStack(){}void push(int x){que1.push(x);}int pop(){int size = que1.size();size--;while(size--){que2.push(que1.front());//que2备份que1弹出的元素que1.pop();}int result = que1.front();que1.pop();//que1 = que2while(!que2.empty()){que1.push(que2.front());que2.pop();}return result;}int top(){return que1.back();}bool empty(){return que1.empty();}
};/*** Your MyStack object will be instantiated and called as such:* MyStack* obj = new MyStack();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->top();* bool param_4 = obj->empty();*/
  • 时间复杂度: pop为O(n),其他为O(1)
  • 空间复杂度: O(n)

一个队列(★)

模拟出栈时,将队列头部(出)的size-1个元素依次重新添加到队尾(入),剩下的那个没有移动的元素就是所求

代码

class MyStack {
public:queue<int> que;MyStack(){}void push(int x){que.push(x);}int pop(){int size = que.size();size--;while(size--){que.push(que.front());que.pop();}int result = que.front();que.pop();return result;}int top(){return que.back();}bool empty(){return que.empty();}
};/*** Your MyStack object will be instantiated and called as such:* MyStack* obj = new MyStack();* obj->push(x);* int param_2 = obj->pop();* int param_3 = obj->top();* bool param_4 = obj->empty();*/
  • 时间复杂度: pop为O(n),其他为O(1)
  • 空间复杂度: O(n)

相关文章:

day10 用栈实现队列 用队列实现栈

题目1&#xff1a;232 用栈实现队列 题目链接&#xff1a;232 用栈实现队列 题意 用两个栈实现先入先出队列&#xff08;一个入栈&#xff0c;一个出栈&#xff09;&#xff0c;实现如下功能&#xff1a; 1&#xff09;push&#xff1a;将元素x推到队列末尾 2&#xff09;…...

解决跨域问题(SpringBoot)

“什么是跨域&#xff1f;” 跨域 &#xff08;Cross-Origin&#xff09; 是指在浏览器的同源策略&#xff08;Same-Origin Policy&#xff09;下&#xff0c;一个网页的源&#xff08;指协议、域名、端口号的组合&#xff09;与另一个网页的源不同。因此&#xff0c;不同源的…...

LeetCode——2487. 从链表中移除节点

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;给你一个链表&#xff0c;然后让你从链表中移除一些节点&#xff0c;移除的规则就是我们选择的这个节点在原链表中往右不能有比这个节点大的值。思路&#xff1a;这个题我最开始以为是双指针&#xff0c;然后找…...

云原生和Kubernetes如何简化应用程序开发

在谈论当前技术时,“云计算”正变得非常普遍,作为开发人员,将会继续体验使用云计算应用程序的优势;在云计算中,另一个正在出现的术语是云原生。在进入实际话题之前,首先了解一下云原生到底是什么。 深入了解云原生应用 现在,世界各地的公司都了解云计算应用程序可以带来…...

点云从入门到精通技术详解100篇-基于深度学习的室内场景三维点云语义分割(续)

目录 CSegNet 语义分割模型构建 3.1 引言 3.2 偏移注意机制 3.3 网络主干 3.4 边缘卷积模块...

RabbitMQ消息可靠性保证机制3--消费端ACK机制

消费端ACK机制 ​ 在这之前已经完成了发送端的确认机制。可以保证数据成功的发送到RabbitMQ&#xff0c;以及持久化机制&#xff0c;然尔这依然无法完全保证整个过程的可靠性&#xff0c;因为如果消息被消费过程中业务处理失败了&#xff0c;但是消息却已经被标记为消费了&…...

Copilot在Pycharm的应用和示例

Copilot 是 Github 在 2021 年发布的 AI 代码助手工具&#xff0c;它可以根据你提供的上下文信息&#xff0c;自动生成代码建议&#xff0c;帮助提高代码编写效率和准确性。在 Pycharm 中使用 Copilot&#xff0c;可以进一步提升 Python 开发效率&#xff0c;本文将分享如何在 …...

搜维尔科技:【简报】第九届元宇宙数字人设计大赛,报名已经进入白热化阶段!

随着元宇宙时代的来临&#xff0c;数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划与美术设计的专业核心能力&#xff0c;我们特别举办了这场元宇宙数字人设计赛道&#xff0c;赛道主题为「AI人工智能科技」 &#xff0c;只要与「AI人工智能科技」相关的…...

性能检测自动化(含内存泄露检测)

一、平台侧实现方案 1、UI case重复执行N次:进入页面,sleep 5s,记录start_time,sleep 30s,记录end_time,性能采集工具全程采集性能数据 2、根据采集到的性能数据,按照N次卡点性能数据:去掉最大的10%、最小的10%,求取平均值,作为单次性能数据结果f(n)…...

iec104和iec61850

iec104和iec61850 IEC104 规约详细解读(一) 协议结构 IEC104 规约详细解读(二)交互流程以及协议解析 61850开发知识总结与分享【1】 Get the necesarry projects next to each other in the same directory; $ git clone https://github.com/robidev/iec61850_open_server.g…...

redis 面试问题 (更新中 ing)

目录 reids 是做什么的为什么那么快有哪些使用场景redis有哪些 数据结构redis 有哪些底层数据结构为什么设计 sds一个 字符串 存储多大容量 stream为什么设计 streamstream 消费者消息丢失stream 消息私信问题 持久化机制redis 持久化机制&#xff0c;优缺点&#xff0c;怎么用…...

力扣(leetcode)第389题找不同(Python)

389.找不同 题目链接&#xff1a;389.找不同 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1&#xff1a; 输入&#xff1a;s “abcd”, t “abcde…...

Linux_源码编译安装LAMP

1. 安装httpd服务 在配置 Apache 网站服务之前&#xff0c;需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用 RPM 安装、源码编译安装这两种方式&#xff0c;前者相对比较简单、快速&#xff0c;但是在功能上存在一定的局限性。在实际的生产环境中&#xff0c;使…...

静态网页设计——清雅古筝网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1T64y1K7Zn/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…...

实战Flink Java api消费kafka实时数据落盘HDFS

文章目录 1 需求分析2 实验过程2.1 启动服务程序2.2 启动kafka生产 3 Java API 开发3.1 依赖3.2 代码部分 4 实验验证STEP1STEP2STEP3 5 时间窗口 1 需求分析 在Java api中&#xff0c;使用flink本地模式&#xff0c;消费kafka主题&#xff0c;并直接将数据存入hdfs中。 flin…...

爬虫与反爬-localStorage指纹(某易某盾滑块指纹检测)(Hook案例)

概述&#xff1a;本文将用于了解爬虫中localStorage的检测原理以及讲述一个用于检测localStorage的反爬虫案例&#xff0c;最后对该参数进行Hook断点定位 目录&#xff1a; 一、LocalStorage 二、爬虫中localStorage的案例&#xff08;以某盾滑块为例&#xff09; 三、如何…...

聊一聊 webpack 和 vite 的开发服务代理的问题

webpack 和 vite webpackVite重新编辑的问题 changOrigin: true如何定义 /api ? webPack And Vite 都是两个比较好用的打包工具&#xff0c;尤其是 Vite, 几几年流行忘记了&#xff0c;特色就是服务启动极快&#xff0c;实现预加载&#xff0c;感觉 webPack 要比 Vite 要复杂一…...

【鸿蒙4.0】安装DevEcoStudio

1.下载安装包 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者华为鸿蒙DevEco Studio是面向全场景的一站式集成开发环境,&#xff0c;在鸿蒙官网下载或升级操作系统开发工具DevEco Studio最新版本&#xff0c;SDK配置和下载&#xff0c;2.1支持Mac、Windows操作系统。…...

[概率论]四小时不挂猴博士

贝叶斯公式是什么 贝叶斯公式是概率论中的一个重要定理&#xff0c;用于计算在已知一些先验信息的情况下&#xff0c;更新对事件发生概率的估计。贝叶斯公式的表达式如下&#xff1a; P(A|B) P(B|A) * P(A) / P(B) 其中&#xff0c;P(A|B)表示在事件B发生的条件下事件A发生的概…...

算法通关村第二十关-黄金挑战图的常见算法

大家好我是苏麟 , 今天聊聊图的常见算法 . 图里的算法是很多的&#xff0c;这里我们介绍一些常见的图算法。这些算法一般都比较复杂&#xff0c;我们这里介绍这些算法的基本含义&#xff0c;适合面试的时候装*&#xff0c;如果手写&#xff0c;那就不用啦。 图分析算法&#xf…...

服务器内存不足怎么办?会有什么影响?

服务器内存&#xff0c;也被称为RAM&#xff08;Random Access Memory&#xff09;&#xff0c;是一种临时存储设备&#xff0c;用于临时存放正在运行的程序和数据。它是服务器上的超高速存储介质&#xff0c;可以快速读取和写入数据&#xff0c;提供给CPU进行实时计算和操作。…...

GPT实战系列-简单聊聊LangChain

GPT实战系列-简单聊聊LangChain LLM大模型相关文章&#xff1a; GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-大话LLM大模型训练 GPT实战系列-探究GPT等大模型的文本生成 GPT实战系列-Baichuan2等大模…...

【读书笔记】《白帽子讲web安全》浏览器安全

目录 第二篇 客户端脚本安全 第2章 浏览器安全 2.1同源策略 2.2浏览器沙箱 2.3恶意网址拦截 2.4高速发展的浏览器安全 第二篇 客户端脚本安全 第2章 浏览器安全 近年来随着互联网的发展&#xff0c;人们发现浏览器才是互联网最大的入口&#xff0c;绝大多数用户使用互联…...

海外服务器2核2G/4G/8G和4核8G配置16M公网带宽优惠价格表

腾讯云海外服务器租用优惠价格表&#xff0c;2核2G10M带宽、2核4G12M、2核8G14M、4核8G16M配置可选&#xff0c;可以选择Linux操作系统或Linux系统&#xff0c;相比较Linux服务器价格要更优惠一些&#xff0c;腾讯云服务器网txyfwq.com分享腾讯云国外服务器租用配置报价&#x…...

Linux 编译安装 Nginx

目录 一、前言二、四种安装方式介绍三、本文安装方式&#xff1a;源码安装3.1、安装依赖库3.2、开始安装 Nginx3.3、Nginx 相关操作3.4、把 Nginx 注册成系统服务 四、结尾 一、前言 Nginx 是一款轻量级的 Web 服务器、[反向代理]服务器&#xff0c;由于它的内存占用少&#xf…...

Oracle文件自动“减肥”记

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

【csharp】抽象类与接口有哪些不同?什么时候应该使用抽象类?

抽象类与接口有哪些不同&#xff1f; 抽象类和接口是在面向对象编程中两个不同的概念&#xff0c;它们有一些重要的区别。以下是抽象类和接口的主要不同点&#xff1a; 抽象类&#xff08;Abstract Class&#xff09;&#xff1a; 成员类型&#xff1a; 抽象类可以包含抽象方…...

最新-mybatis-plus 3.5分页插件配置

mybatis-plus 3.5分页插件配置 前提 1.项目不是springboot, 是以前的常规spring项目 2.mp 从3.2升级到3.5&#xff0c;升级后发现原本的分页竟然不起作用了&#xff0c;每次查询都是查出所有 前后配置对比 jar包对比 jsqlparser我这里单独引了包&#xff0c;因为版本太低…...

案例098:基于微信小程序的电子购物系统的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

亚信安慧AntDB数据库:数字化时代的数据库创新引领者

AntDB数据库以其卓越的创新能力&#xff0c;集中体现在融合统一与实时处理两大关键领域。作为一款服务全国超过10亿用户的分布式数据库&#xff0c;其独特之处在于长期积累的经验、多样性的支持能力、快速响应的数据处理速度以及卓越的系统稳定性。AntDB不仅仅是一个数据库系统…...

做外贸的社交网站/下拉关键词排名

微博被定义为社交媒体&#xff0c;微信朋友圈被定义为社交网络&#xff0c;从两者的区别注定了微博的媒体属性&#xff0c;当他的流量不行的时候&#xff0c;主它是八卦小报也不为过。如果没有微信朋友圈的崛起&#xff0c;可能今天的微博影响力会大得多&#xff0c;可能也就不…...

专业建站提供商/孔宇seo

《庆余年》作者&#xff1a;猫腻介绍&#xff1a; 一个年轻的病人&#xff0c;因为一次毫不意外的经历&#xff0c;穿越到了一个完全不同的世界&#xff0c;成为伯爵府一个并不光彩的私生子。修行无名功诀&#xff0c;踏足京都官场&#xff0c;继承莫名其妙的商团&#…...

动漫公司网站建设/站长工具关键词查询

目标检测 YOLOv5 模型训练、推理、导出命令 flyfish 通常训练命令 $ python train.py --data coco.yaml --cfg yolov5s.yaml --weights --batch-size 64其中yolov5s.yaml&#xff0c;可以替换yolov5m.yaml、yolov5l.yaml、yolov5l.yaml、yolov5x.yaml等 batch-size后面的64…...

做网站让人来注册/成都竞价托管多少钱

头文件添加&#xff1a; #include <unistd.h>...

免费网站代码/seo快速排名优化公司

1、前言 指纹模块和树莓派实现的网上的资料比较少。所以把自己研究成功了的指纹模块给大家分享一下。现在目前市场上指纹模块比较多&#xff0c;大多还支持二次开发&#xff0c;但是难易度不同&#xff0c;一般价格高一点的相对开发简单&#xff0c;很多实现方法都已封装好了。…...

建设银行网站上怎么查看账户/网络营销主要是学什么的

while:9*9乘法表&#xff1a; 第一种&#xff1a; ##第1种写法 i 1 while i < 10: #控制行数为9行j 1while j < i: #控制一行中相乘直到最大数行数print(%d*%d%d\t %(j, i, i*j) , end())j 1print()i 1##第2种写法 for i in range(1,10):for j in range(1,i1): …...