代码随想录算法训练营第10天| 232. 用栈实现队列、225. 用队列实现栈

232. 用栈实现队列

题目链接

232. 用栈实现队列 - 力扣(LeetCode)

思路

记得是用两个栈实现的队列,但是细节记不太住,看了视频才勉强缝缝补补做出来。

本人题解

class MyQueue {
public:stack<int> stackIn;stack<int> stackOut;MyQueue() {//初始化队列,就是初始化栈//stack stackIn;//stack stackOut;错误!!!}void push(int x) {stackIn.push(x);}int pop() {int res;if (stackOut.empty()) { //因为每次都是全部导入,因此只能在//stackOut为空才导入,否则数据顺序错乱while (!stackIn.empty()) { //每次全部导入!stackOut.push(stackIn.top());stackIn.pop();}} res = stackOut.top();stackOut.pop();return res;}int peek() {int result;result = this->pop();stackOut.push(result);return result;}bool empty() {if (stackIn.empty() && stackOut.empty()) return true;return false;}
};

225. 用队列实现栈

题目链接

225. 用队列实现栈 - 力扣(LeetCode)

思路

一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

本人题解(运行成功,提交超出时间限制)

class MyStack {
public:queue<int> myQue;int count = 0;//记住队列的个数MyStack() {}void push(int x) {myQue.push(x);count++;//记录个数}int pop() {int n = count - 1;while (n--) {myQue.push(myQue.front());//因为push时count会++myQue.pop();count--;//此时count--与上面的++抵消,总个数是不变的}int res = myQue.front();//注意,这里是front不是topmyQue.pop();count--;return res;}int top() {//int result = this->pop();//myQue.push(result);//这两行代码是我参考(脑子里参考而已)用两个栈模拟队列的//其实是错的,因为直接调用this->pop的时候队列里的元素已经减少了1个。int m = count - 1;while (m--) {myQue.push(myQue.front());myQue.pop();count--;}int result = myQue.front();return result;}bool empty() {return myQue.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();*/

修改后题解

class MyStack {
public:queue<int> myQue;//int count = 0;//记住队列的个数MyStack() {}void push(int x) {myQue.push(x);//count++;//记录个数}int pop() {int n = myQue.size() - 1;while (n--) {myQue.push(myQue.front());//因为push时count会++myQue.pop();//count--;//此时count--与上面的++抵消,总个数是不变的}int res = myQue.front();//注意,这里是front不是topmyQue.pop();//count--;return res;}int top() {int result = myQue.back();return result;}bool empty() {return myQue.empty();}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】动态内存管理常用函数

前言 我们在之前学习的数组开辟的空间是固定不变的&#xff0c;有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道~ c语言中的动态内存开辟&#xff0c;让程序员⾃⼰可以根据实际需求申请和释放相应空间&#xff0c;这使得空间的开辟变得灵活了许多。 欢迎关注个人主页&#x…

小程序配置服务器域名的操作步骤(入门级)

将详细列出小程序配置服务器域名的操作步骤&#xff1a; 服务器选购推荐&#xff1a;腾讯云轻量服务器 点击以下任一云产品链接&#xff0c;跳转后登录&#xff0c;自动享有所有云产品优惠权益&#xff1a; 经过笔者亲测&#xff0c;强烈推荐腾讯云轻量应用服务器作为游戏服…

微服务简介及其相关技术栈

目录 1、简介 2、技术栈 3、单体架构 4、分布式架构 5、微服务 6、总结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c;初步涉猎Pyth…

【QT+QGIS跨平台编译】之五十七:【QGIS_CORE跨平台编译】—【VECTOR_TILE生成】

文章目录 一、protoc二、生成来源三、构建过程一、protoc Protocol Buffers(简称 protobuf)是一种轻量级、高效的数据序列化框架,它可以将结构化数据序列化为二进制格式,同时还可以进行反序列化和数据压缩。相比于 XML 和 JSON 等传统的文本序列化格式,protobuf 采用二进制…

wpa_supplicant交叉编译

文章目录 源码编译openssl编译libnl交叉编译WPA 开发板测试使用 源码 wpa_supplicant官网&#xff1a;http://w1.fi/wpa_supplicant/ GIT源&#xff1a;git://w1.fi/hostap.git openssl 源码&#xff1a; https://www.openssl.org/ libnl 源码&#xff1a; https://github.c…

自定义preference的使用

自定义preference的使用 control_iconsize_preference_top.xmlcontrol_iconsize_preference_middle.xmlcontrol_iconsize_preference_bottom.xmlcontrol_iconsize_preference_airplane.xmlcontrol_iconsize_preference_no_arrow_top.xmlcontrol_iconsize_preference_no_arrow_m…

3 开源鸿蒙OpenHarmony4.1源码下载、编译,生成OHOS_Image可执行文件的最简易流程

开源鸿蒙OpenHarmony4.1源码下载、编译&#xff0c;生成OHOS_Image可执行文件的最简易流程 作者将狼才鲸日期2024-03-01 准备一台Windows电脑 安装VMware或者VMware Player虚拟机 从华为镜像下载Ubuntu系统&#xff0c;用国内源下载速度更快 Ubuntu 镜像说明https://repo.hu…

map和set例题应用

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 第一题 第二题 第三题 第一题 随机链表的复制https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 思路 首先遍历旧链表&#xff0c;并创建新节点&#xff0c;同时用map将旧节点与新节点…

python模型训练

目录 1、新建模型 train_model.py 2、运行模型 &#xff08;1&#xff09;首先会下载data文件库 &#xff08;2&#xff09;完成之后会开始训练模型&#xff08;10次&#xff09; 3、 训练好之后&#xff0c;进入命令集 4、输入命令&#xff1a;python -m tensorboard.ma…

网络工程师笔记6

ICMP协议 Internet控制报文协议ICMP(InternetControlMessage Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;它对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。使用基于ICMP的应用时&#xff0c;需要对ICMP…

Vue.js+SpringBoot开发社区买菜系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 数据中心模块2.1.2 菜品分类模块2.1.3 菜品档案模块2.1.4 菜品订单模块2.1.5 菜品收藏模块2.1.6 收货地址模块 2.2 可行性分析2.3 用例分析2.4 实体类设计2.4.1 菜品分类模块2.4.2 菜品档案模块2.4.3…

多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测

多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | Matlab实现RIME-BP霜冰算法优化BP神经网…

Springboot+vue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的考勤管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

GitHub Copilot extension activation error: ‘No access to GitHub Copilot found‘

好不容易学生认证通过了&#xff0c;打开vscode用copilot结果一直报这个错误。我的原因是&#xff1a;还未给copilot授权&#xff0c; 通过了学生认证后要进入这里进行授权&#xff1a;

Vue Html中插入本地视频(Video 标签)

在 Vue 中插入本地视频可以通过使用标签来实现。你可以将视频文件放在你的项目中的合适位置&#xff08;比如assets文件夹&#xff09;&#xff0c;然后在 Vue 组件中引用这个视频文件。html同理 首先&#xff0c;在你的 Vue 项目中的assets文件夹下放入你的视频文件&#xff…

k8s单机部署zookeeper

&#xff08;作者&#xff1a;陈玓玏&#xff09; 拉取镜像&#xff1a;docker pull zookeeper&#xff1b;编辑yaml&#xff1a; apiVersion: v1 kind: Service metadata:name: zookeeperlabels:app: zookeeper spec:ports:- name: clientport: 2181protocol: TCPtargetP…

QT TCP传输文件+ui

TCPFile tcp协议传输文件 TCPFile.pro QT core gui networkclientwidget.h #include <QWidget> #include <QTcpSocket> // 通信套接字 #include <QFile>private slots:void on_pushButton_clicked();private:QTcpSocket *tcpSocket;QFile file; /…

selenium进阶设置

1、无头浏览设置和规避爬虫检测 问题一&#xff1a;有界面时可以展示的元素&#xff0c;无头模式报错element not interactable 解决方法&#xff1a;通过错误截图发现&#xff0c;页面上有该元素&#xff0c;但是页面不够大&#xff0c;没有显示想定位的元素。 from seleni…

centos7 安装 docker-compose

1、直接参考官方&#xff1a; Install Compose standalone | Docker Docs 1、安装命令 curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 2、修改 docker-compose 执行权限 不修改执行权…

升级pycharm之后,jupyter无法识别新安装的包

import sys print(sys.executable)在jupyter中运行&#xff0c;检测一下当前jupyter内核运行在哪个环境中-再pycharm的setting里面设置jupyter环境并没有什么用。需要重新在想要使用的环境中重新安装jupyter内核&#xff0c;并且重启。