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

闯关leetcode——225. Implement Stack using Queues

大纲

  • 题目
    • 地址
    • 内容
  • 解题
    • 代码地址

题目

地址

https://leetcode.com/problems/implement-stack-using-queues/

内容

Implement a last-in-first-out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal stack (push, top, pop, and empty).

Implement the MyStack class:

  • void push(int x) Pushes element x to the top of the stack.
  • int pop() Removes the element on the top of the stack and returns it.
  • int top() Returns the element on the top of the stack.
  • boolean empty() Returns true if the stack is empty, false otherwise.

Notes:

  • You must use only standard operations of a queue, which means that only push to back, peek/pop from front, size and is empty operations are valid.

  • Depending on your language, the queue may not be supported natively. You may simulate a queue using a list or deque (double-ended queue) as long as you use only a queue’s standard operations.

Example 1:

Input
[“MyStack”, “push”, “push”, “top”, “pop”, “empty”]
[[], [1], [2], [], [], []]
Output
[null, null, null, 2, 2, false]

Explanation
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // return 2
myStack.pop(); // return 2
myStack.empty(); // return False

Constraints:

  • 1 <= x <= 9
  • At most 100 calls will be made to push, pop, top, and empty.
  • All the calls to pop and top are valid.

Follow-up: Can you implement the stack using only one queue?

解题

这题就是要求使用两个队列模拟栈的操作。它主要考察的是数据结构的相关知识:

  • 队列:先进先出。
  • 栈:先进后出。

在这里插入图片描述

#include <queue>
using namespace std;class MyStack {
public:MyStack() {}void push(int x) {q1.push(x);}int pop() {while (q1.size() > 1) {q2.push(q1.front());q1.pop();}int result = q1.front();q1 = q2;q2 = queue<int>();return result;}int top() {while (q1.size() > 1) {q2.push(q1.front());q1.pop();}int result = q1.front();q2.push(result);q1 = q2;q2 = queue<int>();return result;}bool empty() {return q1.empty();}private:queue<int> q1;queue<int> q2;
};

在这里插入图片描述

代码地址

https://github.com/f304646673/leetcode/blob/main/225-Implement-Stack-Using-Queues/cplusplus/src/solution.hpp


http://www.mrgr.cn/news/60068.html

相关文章:

  • 堆垛机提升机构下降过程中报7901电机转速过快
  • Linux复习-C++
  • 常用 SQL 语句的大全
  • NGINX 保护 Web 应用安全之基于 IP 地址的访问
  • Vue开发
  • 【设计模式-状态模式】
  • 一个简单的图像分类项目(五)编写脚本:创建网络
  • 如何在 CentOS 7 上使用 Let‘s Encrypt 保护 Nginx
  • UHF机械高频头的知识和待学习的疑问
  • PlantUML绘制C++类图
  • 平衡二叉搜索树的时间复杂度为什么是 O(log n)?
  • 【Java】逻辑控制
  • 基于GA遗传优化的风光储微电网削峰填谷能量管理系统matlab仿真
  • Python中的递归函数是如何工作的,它有哪些应用场景?
  • Lesson11---stack
  • 启动MySQL报错,报日志找不到
  • STM32 f407 多通道ADC采集+DMA传输 基于HAL库和Cubemx配置
  • Android13 通过OTA升级更新系统默认设置
  • Renesas R7FA8D1BH (Cortex®-M85) QSPI的功能介绍
  • 【路径跟踪控制:Pure Pursuit控制与车辆运动学模型】
  • Java | Leetcode Java题解之第516题最长回文子序列
  • 如何在 CMD 窗口中校验文件的 MD5 值
  • 如何在 Ubuntu 16.04 上使用 Let‘s Encrypt 保护 Nginx
  • 深度学习(六)CNN:图像处理的强大工具(6/10)
  • 【STM32-HAL库】TEMT6000光照强度传感器(STM32F407ZGT6)(附带工程下载链接)
  • 动态规划算法专题(九):完全背包问题