232.用栈实现队列

  1. 题目

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

实现 MyQueue 类:
void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/
  1. 代码
class MyQueue {public://定义两个栈stack<int> stIn;stack<int> stOut;MyQueue() {}void push(int x) {stIn.push(x);}int pop() {//判断是否为空if(stOut.empty()){while(!stIn.empty()){stOut.push(stIn.top());stIn.pop();}}int res = stOut.top();stOut.pop();return res;}int peek() {int res = this -> pop();stOut.push(res);return res;}bool empty() {if(stIn.empty() && stOut.empty()) return true;else return false;}
};
  1. 小结
    使用两个栈,一个栈用于输出,一个栈用于输入。由于栈是先进后出,当输入栈的内容全部取出压入输出栈时,输出栈的栈顶元素就是队列的第一个元素,这时只需要取出输出栈的栈顶元素就可以实现先入先出的队列操作。

225. 用队列实现栈

  1. 题目
    请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。
    实现 MyStack 类:
    void push(int x) 将元素 x 压入栈顶。
    int pop() 移除并返回栈顶元素。
    int top() 返回栈顶元素。
    boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
    注意:
    你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
    你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

    题目链接:https://leetcode.cn/problems/implement-stack-using-queues/

  2. 代码

class MyStack {public:queue<int> que1;queue<int> que2;MyStack() {}void push(int x) {que1.push(x);}int pop() {int size = que1.size();while(size > 1){que2.push(que1.front());que1.pop();size--;}int res = que1.front();que1.pop();que1 = que2;while(!que2.empty()){que2.pop();}return res;}int top() {int res = this -> pop();que1.push(res);return res;}bool empty() {return que1.empty();}
};
  1. 小结

使用队列2对队列1备份,完成后入先出操作是通过依次对队列1中元素按顺序取出并压入队列2中,直到队列1中只剩下一个元素,最后输出该元素并将队列2复制回队列1,随后清空队列2。

【代码随想录刷题记录】 232.用栈实现队列 、225. 用队列实现栈相关推荐

  1. 代码随想录刷题记录:回溯算法篇

    前言 本专题主讲回溯. 回溯算法个人总结 参考了很多网上的教程,首先是该算法的代码模板总结如下: 代码模板 //回溯算法框架 List<Value> result; void backtr ...

  2. 代码随想录刷题|LeetCode 332.重新安排行程 51. N皇后 37. 解数独

    目录 332.重新安排行程 思路 重新安排行程 51. N皇后 思路 N皇后 37. 解数独 思路 解数独         这三道题目都是困难题目,都是根据代码随想录的思路总结书写,慢慢理解,慢慢熟练 ...

  3. 第1天-代码随想录刷题训练| 704二分查找、26移除元素

    文章目录 1. 二分查找704 扩展 2.移除元素 2.1数组理论基础 2.2 暴力解法 2.3双指针解法 2.4 扩展题 1. 二分查找704 原题链接 给定一个 n 个元素有序的(升序)整型数组 ...

  4. 代码随想录刷题总结:数组与字符串

    一.二分法 704. 二分查找 细节注意: m i d = b e g + e n d − b e g 2 mid=beg+\frac{end-beg}{2} mid=beg+2end−beg​,如此 ...

  5. 二叉树公共祖先问题-代码随想录-刷题笔记

    236. 二叉树的最近公共祖先 递归三部曲: 1)确定递归函数返回值以及参数 需要递归函数返回值,来告诉我们是否找到节点q或者p,那么返回值为bool类型就可以了.但我们还要返回最近公共节点,可以利用 ...

  6. 代码随想录刷题|LeetCode 1049. 最后一块石头的重量II 494. 目标和 474.一和零

    目录 1049. 最后一块石头的重量 II 思路 最后一块石头的重量|| 494. 目标和 思路 0.求什么 1.确定dp数组的含义 2.递推公式 3.初始化dp数组 4.遍历顺序 目标和 474.一 ...

  7. 剑指offer刷题记录 python3 Java

    剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...

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

    LeetCode刷题记录12--232. Implement Queue using Stacks(easy) 目录 LeetCode刷题记录12--232. Implement Queue usin ...

  9. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

最新文章

  1. 【怎样写代码】参数化类型 -- 泛型(六):泛型接口
  2. s3c2410上搭建QT/Embedded4.8.5开发环境(四)--安装intel-x86 X11平台qt库qt-everywhere-opensource-src-4.8.5...
  3. python和R数据类型查看、赋值、列表、for循环、函数用法对比示例
  4. java 桶排序_[图解] 桶排序
  5. Android layout布局属性、标签属性总结大全
  6. SELECT执行过程,MySQL聚合函数,多行分组函数,GROUP BY HAVING,详细完整可收藏
  7. 【project】十次方-01
  8. SWT多线程注意事项
  9. 小汤学编程之JavaEE学习day10——Spring
  10. Float 运算的怪异性
  11. linux gvim 列编辑,Linux——vim编辑器
  12. linux下python安装包_Linux服务器中安装python包管理工具pip
  13. 从CCNA到CCNP笔记宝典(第一版)发布了
  14. Linux 重启命令
  15. java多线程开发--语法糖之synchronized关键字
  16. 2020-10-22标准正态分布表(scipy.stats)
  17. CART决策树python实现
  18. 小技巧:DELL成就5620笔记本电脑网卡驱动
  19. 操作系统-进程互斥的软件实现方法
  20. 兼容Android 11 相机拍照,从相册中选择,裁剪图片

热门文章

  1. 计算机系统应用词汇书籍,英语词汇具象化创新教学方法研究
  2. ARM GCC汇编伪指令
  3. 自注意机制中添加局部信息
  4. linux中的> 输出重定向和 >> 追加、时间日期类、date 显示当前时间
  5. 偏安一隅的牙博士,能借IPO走出“围城”吗?
  6. Kickstarter是一个全球众筹平台
  7. 7-59 打印菱形图案 (15 分)
  8. two-stage目标检测算法介绍
  9. python语句list_python中list的使用
  10. linux下C语言编程操作数据库(sqlite3)