LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

目录

LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

前言

题目

语言

思路

源码

后记


前言

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

题目

此题是关于数据结构的,关于栈和队列的操作,学过数据结构的应该都知道。题目目标是用栈来实现队列的操作。

语言

C++

思路

做这题得先理解栈和队列各自的特点,总结就是一句话:栈后进先出、队列先进先出。理解这个之后,后面就好办多了。

用两个栈来实现队列的操作。一个s1一个s2。

  1. void push(int x):实现进队操作,将x放在最后。先将栈s2中的元素全部出栈、然后进栈到s1。最后再将x元素进栈到s1,这样x就在最后面了。

  2. int pop():实现出栈操作。先将栈s1中的元素全部出栈、然后进栈到s2。这样之后,相当于把栈s1中的值逆序排放在s2中,这样再去取s2中的top,其实就是队列的头元素。

  3. int peek():返回头元素。先将栈s1中的元素全部出栈、然后进栈到s2。取s2中的top,其实就是队列的头元素。

  4. bool empty():判空。如果s1、s2中均为空,返回true,否则返回false。

源码

class MyQueue {stack<int>s1;stack<int>s2;
public:/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {while (!s2.empty()) {s1.push(s2.top()); s2.pop();}s1.push(x);}/** Removes the element from in front of queue and returns that element. */int pop() {int item;while (!s1.empty()) {s2.push(s1.top()); s1.pop();}s2.top();s2.pop();return item;}/** Get the front element. */int peek() {while (!s1.empty()) {s2.push(s1.top()); s1.pop();}return s2.top();}/** Returns whether the queue is empty. */bool empty() {if(s1.empty() && s2.empty())return true;}
};
​
/*** 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();*/

后记

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

LeetCode刷题记录12——232. Implement Queue using Stacks(easy)相关推荐

  1. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  2. LeetCode刷题记录8——605. Can Place Flowers(easy)

    LeetCode刷题记录8--605. Can Place Flowers(easy) 目录 LeetCode刷题记录8--605. Can Place Flowers(easy) 题目 语言 思路 ...

  3. LeetCode刷题记录6——696. Count Binary Substrings(easy)

    LeetCode刷题记录6--696. Count Binary Substrings(easy) 目录 LeetCode刷题记录6--696. Count Binary Substrings(eas ...

  4. LeetCode刷题记录——17电话号码的字母组合

    LeetCode刷题记录--17电话号码的字母组合 一 题目描述: 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合.给出数字到字母的映射如下.注意1不对应任何字母 示例: 输入:&quo ...

  5. wy的leetcode刷题记录_Day15

    wy的leetcode刷题记录_Day15 目录 wy的leetcode刷题记录_Day15 2441. 与对应负数同时存在的最大正整数 题目介绍 思路 代码 收获 2442. 反转之后不同整数的数目 ...

  6. 算法记录 牛客网 leetcode刷题记录

    算法记录 & 牛客网 & leetcode刷题记录 解题思路 STL容器 常用算法模板 堆排序 插入排序 快速排序 BFS层序遍历 二叉树 JZ55 二叉树的深度 BST(binary ...

  7. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  8. LeetCode刷题记录13——705. Design HashSet(easy)

    LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...

  9. LeetCode刷题记录11——290. Word Pattern(easy)

    LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...

最新文章

  1. 学习《Linux设备模型浅析之设备篇》笔记(二)
  2. 为什么ppt图形卡配置不正确_电脑配置 | 赛博朋克2077什么配置能玩
  3. Linux 在 linux 中搭建 FTP 服务
  4. https协议 ppt 下载卷_做PPT被版权吓得心颤颤?教你如何搞到靠谱素材
  5. sap与外部系统的接口怎么实现
  6. java实现123n_用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 求高手指点...
  7. C语言(CED)王老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数(递归求解)
  8. jquery获取iframe里的js事件
  9. C程序设计语言现代方法11:指针
  10. oracle使用all关键字过滤,选择要进行过滤的抽样、线程、LWP 和 CPU
  11. rocketMq错误日志所在位置
  12. netframework 4.5官网下载路径
  13. Fiddler4入门——手机抓包
  14. 报考PMP一定得经过培训机构吗?
  15. ESXi7.0 安装 MacOS (ESXi Unlocker 3.0.3)
  16. 【机器学习实战】1、机器学习主要任务
  17. ubuntu2004 安装protoc
  18. 等保二级需要测评吗?多久测评一次?
  19. python练手_opencv面部相似度标记
  20. PayPal 支付接口详解

热门文章

  1. python 数字循环
  2. 记录一次没有收集直方图优化器选择全表扫描导致CPU耗尽
  3. mysql查看视图用户
  4. linux定时器(crontab)实例
  5. C C++的编译过程详解
  6. HDU 3549 Flow Problem(最大流模版EK算法)
  7. sar sensor传感器的作用_传感器攻防战-惯导IMU
  8. mysql存储家庭成员信息_家谱管理系统的设计与实现(MyEclipse,MySQL)
  9. idea添加database插件_IDEA高级玩法:集成JIRA、UML类图插件、SSH、FTP、Database管理......
  10. 边城高级中学2021届高考成绩查询,湖南省花垣县边城高级中学2021届高三第二学期学科素养测试英语试题及答案.doc...