博客
关于我
LeetCode刷题记录12——232. Implement Queue using Stacks(easy)
阅读量:519 次
发布时间:2019-03-08

本文共 1062 字,大约阅读时间需要 3 分钟。

LeetCode刷题记录:232. Implement Queue using Stacks

目录前言题目思路源码后记

前言从今天开始学习用C++来打代码,虽然已经学习过C和Java了,但在写的时候,脑子里总是想着面对对象,写来写去又感觉再写C一样。还是很不熟练,希望能边学边练。

题目用两个栈来实现队列。这是一个经典的数据结构问题。用栈来模拟队列,因为队列是先进先出,而栈是后进先出,所以需要巧妙地利用两个栈的特性来实现。

思路做这题得先理解栈和队列各自的特点。栈后进先出,队列先进先出。用两个栈来实现队列的操作,一个s1一个s2。

使用两个栈来实现队列操作,方法是:

  • push操作:将x放在队列的最后。先将s2中的元素全部出栈到s1,然后将x进栈到s1,x就放在队尾。

  • pop操作:将s1中的元素全部出栈到s2,将s2弹出一个元素,返回这个元素。

  • peek操作:将s1有元素的部分全部出栈到s2,然后返回s2的top元素。

  • empty操作:s1和s2均为空,则返回true,否则返回false。

源码

#include 
using namespace std;class MyQueue {private: stack
s1; stack
s2;public: MyQueue() {} void push(int x) { while (!s2.empty()) { s1.push(s2.top()); s2.pop(); } s1.push(x); } int pop() { int item; while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } item = s2.top(); s2.pop(); return item; } int peek() { while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } return s2.top(); } bool empty() { return s1.empty() && s2.empty(); }};

后记做这样的栈和队列,主要抓住其各自的特点:栈后进先出,队列先进先出。最好做的时候画画示意图,就很清楚了。

转载地址:http://joyiz.baihongyu.com/

你可能感兴趣的文章
源码编译安装MySQL5.6.12详细过程
查看>>
Nginx安装学习使用详细记录
查看>>
推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
查看>>
Sqlite -- 数据迁移备份--从低版本3.6.2到高版本3.8.6
查看>>
刚刚!频域通道注意力网络FcaNet开源了!
查看>>
百度视觉技术部人脸检测方向招聘实习生~北京
查看>>
「深度学习知识体系总结(2021版)」开放下载了!
查看>>
亚马逊招聘实习生,ML、CV、机器人和语音处理领域
查看>>
Python 使用pymongo操作mongodb库
查看>>
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED
查看>>
c++继承与派生习题答案
查看>>
PROTEUS编译C51程序报L121错误的解决方法
查看>>
虚拟机Centos6开机黑屏解决方法
查看>>
linux下达梦数据库安装和使用步骤
查看>>
2024:【例4.10】末两位数
查看>>
第123天学习打卡(Redis 测试性能 基础知识 Redis-Key String List)
查看>>
“ModuleNotFoundError: No module named ****“问题分析和解决思路
查看>>
Linux系统部署Grafana
查看>>
限时删!字节总监总结一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)...
查看>>
设计模式-软件设计规则
查看>>