首页 > 编程语言 >用栈实现队列 [Java]

用栈实现队列 [Java]

时间:2024-11-04 17:50:51浏览次数:6  
标签:peek Java 队列 pop 用栈 push return stackOut empty

用栈实现队列

题目链接:LeetCode 232
描述
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(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 操作是合法的。

示例

输入:
[“MyQueue”, “push”, “push”, “peek”, “pop”, “empty”]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]
解释:
MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1 myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false

代码

class MyQueue {

    Stack<Integer> stackIn;
    Stack<Integer> stackOut;
    public MyQueue() {
        stackIn = new Stack<>();
        stackOut = new Stack<>();
    }
    
    public void push(int x) {
        stackIn.push(x);
    }
    
    public int pop() {
        dumpstackIn();
        return stackOut.pop();
    }
    
    public int peek() {
        dumpstackIn();
        return stackOut.peek();
    }
    
    public boolean empty() {
        return stackIn.empty() && stackOut.empty();
    }

    private void dumpstackIn(){
        if(!stackOut.empty()){
            return;
        }
        while(!stackIn.empty()){
            stackOut.push(stackIn.pop());
        }
    }
}

标签:peek,Java,队列,pop,用栈,push,return,stackOut,empty
From: https://blog.csdn.net/weixin_43777513/article/details/143427555

相关文章

  • 大数加法 [Java]
    大数加法题目链接:牛客BM86描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。示例输入:“1”,“99”返回值:“100”说明:1+99=100思路方法一:申请两个栈空间和一个标记位,然后将两个栈中内容依次相加。 与链表相加类似:7、链表相加方法二......
  • 踏上Java之旅:环境搭建指南
    编程爱好者们!今天我要和大家分享一个非常基础但重要的主题——Java环境的搭建。对于初学者而言,正确的环境配置是学习Java的第一步,也是至关重要的一步。接下来,我会手把手教你如何在自己的电脑上配置Java开发环境。第一步:下载并安装JDKJavaDevelopmentKit(JDK)是Java编程语......
  • Java上传文件到远程服务器和浏览器预览图片
    导入maven依赖<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version></dependency>创建一个工具类UploadImageimportcom.jcraft.jsch.Channel;importcom.jcraft.......
  • 初探Java:掌握基础语法的第一步
    大家好,我是一位正在学习Java编程的初学者。在这篇博文中,我想和大家分享我在掌握Java基础语法过程中的学习体会和一些实用的建议。希望我的经历能够帮助那些刚开始接触Java的朋友找到正确的学习路径。首先,为什么选择Java?Java作为一种广泛使用的编程语言,因其跨平台性、健壮性和......
  • JAVA工作经验4-5年一般会面试什么问题?
    JAVA工作经验4-5年面试会问的问题如下:不多bb,来看文档内容面试总结一共有三份,内容涵盖Java基础、JVM、多线程、Mysql、Spring、SpringBoot、SpringCloud、Dubbo、Mybatis、网络、Linux、MQ、Zookeeper、Netty、大数据、算法、项目方面以及设计模式等方面的面试真题。篇幅限......
  • java代码重构 接口和接口实现类合并
    maven<dependency><groupId>com.github.javaparser</groupId><artifactId>javaparser-core</artifactId><version>3.24.0</version></dependency>代码packagecom.xx;i......
  • 现在的Java面试都会问哪些问题?
    前言金九银十已过,不少人找LZ咨询,问我现在的面试需要提前准备什么?为了造福更多的开发者,也为了让更多的小伙伴通过面试;LZ近期也一直想着怎么才能帮到大家。所以近期在各大渠道整合大厂相关面试题,并结合了我一位现在已经入职阿里(阿里的Offer就是他今年的第15张offer)的朋友一整年......
  • Java面试高频问题:深入理解 volatile 关键字的作用与实际应用
    在Java并发编程中,volatile是一个常见的关键字,尤其在多线程面试中经常被提及。很多开发者只了解volatile能“防止指令重排序”或者“保证可见性”,但真正理解其应用并正确使用的人并不多。这篇文章将详细介绍volatile的原理、使用场景、实际案例和面试常见问题,帮助你更......
  • 深入理解Java中的数组克隆:浅克隆与深克隆
    深入理解Java中的数组克隆:浅克隆与深克隆在Java编程中,数组的克隆是一个常见的需求,尤其是在处理复杂数据结构时。Java提供了数组的clone方法,但这个方法的行为在不同情况下有所不同。本文将通过一个具体的代码示例,深入探讨Java中数组的浅克隆和深克隆的概念,并解释它们之间的区别......
  • 说说Java的类加载机制?究竟什么是双亲委派模型?6B
    首先引入一个概念,什么是Java类加载器?一句话总结:类加载器(classloader)用来加载Java类到Java虚拟机中。官方总结:Java类加载器(英语:JavaClassloader)是Java运行时环境(JavaRuntimeEnvironment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使......