【Leetcode】225. 用队列实现栈

2023-11-15

题目描述

在这里插入图片描述

请你仅使用两个队列实现一个后入先出(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(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

题解

执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户

内存消耗:36.3 M, 在所有 Java 提交中击败了12.23%的用户

class MyStack {
    Queue<Integer> q1;
    Queue<Integer> q2;

    /** Initialize your data structure here. */
    public MyStack() {
        this.q1 = new LinkedList<>();
        this.q2 = new LinkedList<>();
    }
    
    /** Push element x onto stack. */
    // 因为q2所有的东西最后都会换到q1那,所以x push进q2之后,q1(之前存的)如果有东西,就一个个放到q2,x的后面
    // 完成顺序的颠倒。颠倒完之后,q2的元素整体复制到q1。q1元素出队的顺序就和push的顺序是相反的。
    public void push(int x) {
        q2.offer(x);
        while (!q1.isEmpty()) {
            q2.offer(q1.poll());
        }
        Queue<Integer> temp = q1; // q2所有的东西最后都会换到q1那
        q1 = q2;
        q2 = temp;
    }
    
    /** Removes the element on top of the stack and returns that element. */
    public int pop() {
        return q1.poll();
    }
    
    /** Get the top element. */
    public int top() {
        return q1.peek();
    }
    
    /** Returns whether the stack is empty. */
    public boolean empty() {
        return q1.isEmpty();
    }
}

/**
 * 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();
 * boolean param_4 = obj.empty();
 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Leetcode】225. 用队列实现栈 的相关文章

  • 为什么 JavaFX API 不包含在 Java 8 J2SE 中? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有谁知道为什么 JavaFX 8 仍然不是即将推出的 Java 8 中的日常 J2SE API 显示所有 Java 组件的技术图清楚地将 Jav
  • 如何消除 Java BoxLayout 中的间距?

    I programmed following ListPanel 使用 JavaScriptBoxLayout public class ListPanel extends JPanel private ArrayList
  • 如何抑制 Cucumber/Junit 断言堆栈跟踪

    我有一个黄瓜场景 该步骤使用assertEquals 我的结果报告显示了对最终用户不友好的堆栈跟踪 我怎样才能抑制它 Scenario Add two numbers Given I have two inputs 3 and 2 When
  • Java - 红、绿、蓝获取RGB

    通过致电getRGB int x int y with a BufferedImage对象 得到一个负数 如何将三个不同的值 红色 绿色和蓝色 转换为这个单个负数 使用颜色类 new Color r g b getRGB
  • 使用 Eclipse 将具有外部依赖项的 Java 项目导出到 jar

    有没有一种简单的方法可以将 Java 项目 包括其所有外部依赖项 导出到标准 jar 文件 我开发了一个使用多个 Apache 库的 SDK 我希望能够将该项目作为单个 jar 发布 到目前为止我找到的这个问题的答案要求将项目打包为 Run
  • Spring @Validated 在服务层

    Hej 我想使用 Validated group Foo class 在执行方法之前验证参数的注释 如下所示 public void doFoo Foo Validated groups Foo class foo 当我将此方法放入 Spr
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • 为什么我的 @OneToMany 属性出现主键违规?

    我有一个实体 Entity public class Student GeneratedValue strategy GenerationType AUTO Id private long id OneToMany private Set
  • 如何修复maven错误JAVA_HOME环境变量未正确定义

    当我在虚拟环境中检查maven的版本时 出现以下错误 The JAVA HOME environment variable is not defined correctly This environment variable is need
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • java 中的 Try-with-resources 和 return 语句

    我想知道是否放一个return里面的声明尝试资源block 防止资源自动关闭 try Connection conn return conn createStatement execute 如果我写这样的东西将会联系被关闭 Oracle 文
  • 在 Java 中的 JFrame/JPanel/JComponent 中添加 Web 浏览器

    我正在开发一个 Java 应用程序 需要在应用程序中使用 Web 浏览器 我见过一些应用程序这样做 例如在同一应用程序中单击左侧面板中的提要并打开右侧面板中的链接时的 RSS 阅读器 我想实现类似的功能 在java中可以做到这一点吗 Jav
  • 如何加载图像文件到ImageView?

    我试图在从文件选择器中选择图像文件后立即显示该图像文件 文件选择器仅限于 png 和 jpg 文件 所选文件存储在文件类型的变量中 为此 我设置了一个 ImageView 我希望用这个新文件设置图像 唯一的问题是它的类型是文件而不是图像 如
  • 应用程序中空指针异常[重复]

    这个问题在这里已经有答案了 我正在尝试在我的应用程序中实施应用程序内计费 我写了这段代码 public class Settings extends PreferenceFragment ServiceConnection mService
  • 如何在 Java 中创建一个带有连字符的值的静态枚举?

    如何创建如下所示的静态枚举 static enum Test employee id employeeCode 截至目前 我遇到了错误 这对于 Java 来说是不可能的 因为每个项目都必须是有效的标识符 并且有效的 Java 标识符可能不包
  • 在java中创建一个XML树并将其转换为json对象

    我尝试创建也能够转换为 json 的树 但对于只有一个xpath 当我尝试实现多个 xpath 时 我无法获得所需的输出 这里我分享一下我的实现 private static Document addElemtbypath List
  • 设置 Firefox 配置文件以使用 Selenium 和 Java 自动下载文件

    我想使用 Selenium WebDriver 和 Java 验证文件下载 要下载的文件为 PDF 格式 当 WebDriver 单击 AUT 中的 下载 链接时 Firefox 将打开以下下载确认窗口 我希望 Firefox 自动下载文件
  • 尝试使用 Spring 和扩展 Hibernate JpaRepository 的自定义 GenericDao 接口来使用 EhCache

    背景 这是我的工作 简化 GenericDao接口 由任何实现DomainDao 通用Dao java NoRepositoryBean public interface GenericDao
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即
  • 在 for 循环比较中使用集合大小

    Java 中 Collections 的 size 方法是否有编译器优化 考虑以下代码 for int i 0 i

随机推荐

  • TensorFlow学习之LSTM ---语言模型(PTB数据集的处理)

    语言模型是很多自然语言处理应用的基石 非常多自然语言处理应用的技术都是基于语言模型 语言模型的任务就是预测每个句子在语言中出现的概率 一 评价方法 语言模型效果好坏的常用评价指标时复杂度 perplexity 在一个测试集上得到的perpl
  • Java泛型 自限定类型(Self-Bound Types)详解

    文章目录 简介 普通泛型类 构成自限定 自限定类型的泛型类 JDK源码里自限定的应用 enum JDK源码里自限定的应用 Integer 简介 java泛型里会有class SelfBounded
  • HTTP常见状态码(404、400、500)等错误

    访问网页偶尔会打不开 且有一串数字或带着中文或英文 这都是网页状态码在提示页面打不开的原因 常见的状态码有 200 服务器成功返回网页 404 请求的网页不存在 503 服务不可用 今天就为大家详细分解下有多少种状态码且各类状态码代表的意思
  • dbfread报错ValueError错误解决方法

    问题 我在用dbfread处理 dbf数据的时候出现了报错 ValueError could not convert string to float b 然后查找 dbf源文件的时候 发现在报错的那一行数据中 有一列甚至好几列的数据中出现了
  • 牛客题目——最长无重复子数组、分糖果问题、旋转数组

    文章目录 题目1 最长无重复子数组 解题思路 代码实现 题目2 分糖果问题 解题思路 代码实现 题目3 旋转数组 解题思路 代码实现 题目1 最长无重复子数组 给定一个长度为n的数组arr 返回arr的最长无重复元素子数组的长度 无重复指的
  • volatility内存取证分析与讲解(持续更新)

    volatility内存取证分析与讲解 0x01 volatility的安装 0x02 基本使用 0x03 取证实战 持续更新 0x04 总结 0x01 volatility的安装 本人暂时只使用windows下的volatility进行取
  • AttributeError: Model object has no attribute predict_classes 的解决方案

    第一次用的网络是在model Sequential 下添加模块的的方法 也就是所谓的顺序模型 Sequential class可以使用model predict classes 的方法来实现预测 代码如下 model Sequential
  • android 七巧板布局,iOS界面视图布局框架 – TangramKit

    TangramKit logo TangramKit是一套在Swift3 0语言上开发的iOS界面视图布局框架 它的名字来源于中国古代的玩具七巧板 寓意着可以用简单的功能来构造出各种千变万化且非常复杂的UI界面 TangramKit的内核是
  • 静态分析之数据流分析与 SSA 入门 (二)

    什么是静态单赋值 SSA SSA 是 static single assignment 的缩写 也就是静态单赋值形式 顾名思义 就是每个变量只有唯一的赋值 以下图为例 左图是原始代码 里面有分支 y 变量在不同路径中有不同赋值 最后打印 y
  • 【pytorch】使用model.eval()和torch.no_grad()以及requires_grad = False之间的区别

    model eval 是将模型切换到评估模式 这意味着在模型中使用的一些操作 例如Dropout和BatchNorm 将不会在评估模式下运行 而是使用预定义的值 这对于在测试集上进行推理时很有用 with torch no grad 是一个
  • 【LaTeX入门】11 文本居中

    首先给大家分享一个巨牛巨牛的人工智能教程 是我无意中发现的 教程不仅零基础 通俗易懂 而且非常风趣幽默 还时不时有内涵段子 像看小说一样 哈哈 我正在学习中 觉得太牛了 所以分享给大家 点这里可以跳转到教程 centerline 语法 ce
  • App违法违规收集使用个人信息自评估指南(史宾格隐私合规检查项)

    隐私政策文本 隐私政策的独立性 易读性 是否有隐私政策 在APP界面中能够找到隐私政策 包括通过弹窗 文本链接 常见问题等形式 隐私政策是否单独成文 隐私政策以单独成文的形式发布 而不是作为用户协议 用户说明等文件中的一部分存在 隐私政策是
  • 【Java】无数据源启动

    前言 在开发项目的过程中 经常碰到框架使用SpringBoot进行开发 但是却不需要连接数据库的方式 本篇文章详细记录了具体的解决方法与方式希望能对您有所帮助 一 启动类配置 代码如下 import org springframework
  • 有哪些老程序员都知道对新程序员很有用的经验

    回想起自己刚步入职场的时候 接到任务的心态就是尽快搞完 只要没做完就怕耽误了整个团队 还怕领导觉得自己能不行 怕被开除等等 但是每次完成之后 都有错误 编译通过了 逻辑又有问题 自己就是不断的修改当中 时间久了自己写的代码自己都不愿意看 因
  • CMMI 级别中和BUG率

    关于CMMI 级别中和BUG率相关的信息如下 千行代码缺陷率 bug率 CMM1级 11 95 CMM2级 5 52 CMM3级 2 39 CMM4级 0 92 CMM5级 0 32 基本属于成倍递减 国内通过CMMI 5 级评定的IT行业
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • C/C++编程题刷题:leetcode 62. 不同路径 和 63. 不同路径 II

    62 不同路径 一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 问总共有多少条不同的路径 例如 上图是一个7 x
  • Filter(过滤器)常见应用

    javaweb学习总结 四十六 Filter 过滤器 常见应用 一 统一全站字符编码 通过配置参数charset指明使用何种字符编码 以处理Html Form请求参数的中文问题 1 package me gacl web filter 2
  • 【深度学习】Faster R-CNN+win10+tensorflow1.12.0+python3.6+CUDA9.0+cudnn7.3配置

    Faster R CNN win10 tensorflow1 12 0 python3 6 CUDA9 0 cudnn7 3配置 一 源码下载 二 修改 lib 下部分文件 编译Cython模块 三 安装COCO API 四 下载数据 五
  • 【Leetcode】225. 用队列实现栈

    题目描述 请你仅使用两个队列实现一个后入先出 LIFO 的栈 并支持普通栈的全部四种操作 push top pop 和 empty 实现 MyStack 类 void push int x 将元素 x 压入栈顶 int pop 移除并返回栈