[leetcode] 225. Implement Stack using Queues

[leetcode] 225. Implement Stack using Queues

Description

Implement the following operations of a stack using queues.

push(x) – Push element x onto stack.

pop() – Removes the element on top of the stack.

top() – Get the top element.

empty() – Return whether the stack is empty.

Example:

MyStack stack = new MyStack();stack.push(1);stack.push(2);  stack.top();   // returns 2stack.pop();   // returns 2stack.empty(); // returns false


Notes:

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

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

• You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

分析

[En]

The title means: use the queue to realize the operation of the stack.

• 队列先进先出，堆栈先进先出。
[En]

queues are first-in, first-out, while stack is first-in, first-out.*

• 每次在前面插入新添加的数字，这样队列的保存顺序与堆栈的顺序相反，取出的方式也是相反的，所以相反的是我们需要的顺序。
[En]

insert the newly added numbers in front of each time, so that the order in which the queue is saved is the opposite of the order of the stack, and the way they are taken out is also reverse, so the reverse is the order we need.*

• 我们需要一个辅助队列tmp，把s的元素也逆着顺序存入tmp中，此时加入新元素x，再把tmp中的元素存回来，这样就是我们要的顺序了，其他三个操作也就直接调用队列的操作即可，

代码

class MyStack {private:    queue q1;public:    /** Initialize your data structure here. */    MyStack() {            }        /** Push element x onto stack. */    void push(int x) {        queue tmp;        while(!q1.empty()){            tmp.push(q1.front());            q1.pop();        }        q1.push(x);        while(!tmp.empty()){            q1.push(tmp.front());            tmp.pop();        }    }        /** Removes the element on top of the stack and returns that element. */    int pop() {        int t=top();        q1.pop();        return t;    }        /** Get the top element. */    int top() {        return q1.front();    }        /** Returns whether the stack is empty. */    bool empty() {        return q1.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(); */

参考文献

​​

• 收藏
• 评论
• *举报

Original: https://blog.51cto.com/u_9453611/5569063
Author: 是念
Title: [leetcode] 225. Implement Stack using Queues

(0)

大家都在看

• 对二进制的某一位操作

大数据 2023年5月26日
0148
• Python第三方nltk库的安装

nltk语料库的安装 由于nltk_data语料库过大，在国内的网络情况下安装会显得十分困难，并且在线安装十分容易出错，所以我们最好使用压缩包进行安装，链接如下：https://p…

大数据 2023年5月28日
0272
• 云主机发展市场风起云涌

Original: https://www.cnblogs.com/hardcoregeek/p/16129118.htmlAuthor: 硬核技术控Title: 云主机发展市场风…

大数据 2023年5月26日
0173
• 自然语言处理向量模型-Word2Vec

自然语言处理向量模型-Word2Vec 自然语言处理与深度学习 拼写检查、关键词检索… 文本挖掘（产品价格、日期、时间、地点、人名、公司名） 文本分类 机器翻译 客服系…

大数据 2023年5月28日
0165
• [JVM] IDEA集成VisualVM

VisualVM是集成命令行JDK工具和轻量级分析功能的可视化工具。 参考： https://blog.csdn.net/qq_22741461/article/details/8…

大数据 2023年5月28日
0174

之前写过Flink CDC sink 到 Iceberg中,本篇主要实践如何CDC到hudi中. 什么是hudi? Hudi is a rich platform to build…

大数据 2023年6月3日
0137
• Linux 安装Nigix网站

首先，linux需要搭建一个网站，为了完成压测使用。考虑到近期性能测试的内容，所以选择最快的安装方式-Ngnix。没想到安装过程中遇到各种问题，Ngnix软件安装在linux环境上…

大数据 2023年6月3日
0151
• Redis篇之redis服务的启动方式总结

大数据 2023年11月14日
0111
• Spark系列—Spark SQL执行过程解析

大数据 2023年11月16日
0140
• 使用阿里云镜像安装 Docker 服务

Docker从1.13版本之后采用时间线的方式作为版本号，分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的，企业版会提供额外的收费服务，比如经过官方测试认证…

大数据 2023年5月29日
0132
• python collections 专用容器数据类型

文章目录 * ​​1. 简介​​* ​​2. 子类​​* ​​3. 计数器-Counter​​ * ​​3.1 基础介绍​​* ​​3.2 elements()​​* ​​3.3 …

大数据 2023年5月26日
0203
• docker网络

一，docker网络模式(单台主机模式) *Null(–net=None) *Host *Container *Brige(–net-brige) 二，跨主…

大数据 2023年5月29日
0147
• 【Docker】解决docker通过volumes挂载文件不生效，修改后容器内数据不同步，需要重启容器才能同步的问题

docker通过volumes挂载文件更新后不生效问题的解决办法 1、挂载目录不会有问题，所以我们可以通过挂载目录来解决 2、若不想挂载目录，可以将文件权限修改成777 chmod…

大数据 2023年5月29日
0370
• 6.5 实训任务 HBase shell 常见命令的使用

6.5 实训任务 HBase shell 常见命令的使用 原创 lanxiaofang2022-08-02 14:51:28博主文章分类：大数据技术基础 ©著作权 文章标签 hba…

大数据 2023年5月24日
0144
• 剑指Offer:按之字形顺序打印二叉树

题目描述: 请实现一个函数按照之字形打印二叉树，即第一行按照从左到右的顺序打印，第二层按照从右至左的顺序打印，第三行按照从左到右的顺序打印，其他行以此类推。 题目描述: 请实现一个…

大数据 2023年6月3日
0179
• SpringBoot后端统计网站的IP访问次数及地区

大数据 2023年11月16日
0111