首页 > 其他分享 >用栈实现队列

用栈实现队列

时间:2024-11-01 11:20:08浏览次数:1  
标签:return 队列 pop 实现 用栈 push 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());
        }
    }
}

标签:return,队列,pop,实现,用栈,push,stackOut,empty
From: https://www.cnblogs.com/dwhere/p/18519803

相关文章

  • 【含文档+PPT+源码】基于Python校园跑腿管理系统设计与实现
    项目介绍本课程演示的是一款基于Python校园跑腿管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料2.带你从零开始部署运行本套系统3.该项目附带的源码资料可作为......
  • 基于微信小程序的蛋糕订购系统的设计与实现 -附源码
    摘 要在现代社会,蛋糕作为一种受欢迎的甜点,在各种场合都扮演着重要的角色。为了满足人们对蛋糕订购的需求,基于SpringBoot和微信小程序的蛋糕订购系统应运而生。本研究旨在开发一个方便、快捷的平台,让用户能够通过微信小程序轻松浏览、选择和订购各种美味的蛋糕。通过这个蛋......
  • 【Matlab算法】基于MATLAB实现时间序列预测(附MATLAB完整代码)
    基于MATLAB实现时间序列预测前言正文代码实现结果图结果说明总结前言时间序列预测是许多实际应用中的重要任务,涉及领域包括经济、金融、气象等。其中,自回归集成移动平均(ARIMA)模型是一种广泛使用的时间序列预测方法,因其简单有效而备受青睐。在本文中,......
  • java+vue计算机毕设高校毕业生就业管理系统的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及和毕业生人数的逐年攀升,高校毕业生就业问题已成为社会各界关注的焦点。传统的就业管理模式在信息处理、资源匹配及效率提升方面已......
  • JuiceFS CSI:Mount Pod 的平滑升级及其实现原理
    当集群中需要升级MountPod时,目前推荐的方式是更新配置后重新挂载应用Pod进行滚动升级,但这种升级方式的问题在于需要业务重启。如果对业务的使用模式很清楚时,比如没有数据写入等,也可以选择手动重建MountPod的方式。在更新配置后,手动删除已有的MountPod,并等待其重建,同时......
  • python使用魔法函数__getitem__实现字典和列表式访问自定义类型
    起因想起C++可以实现运算符重载,以实现以数组的方式([])访问我们的类.我想要实现一个类,可以同时用类似于字典和就想到python能不能实现这个效果,而且显然是可以的,不然numpy是怎么实现属于自己的数组的?#期望实现效果classmyclass: passc=myclass()#像这样使用[]访......
  • NiosII+GPS/GSM实现汽车状态监控系统
    基于SoPC的汽车安全监控系统采用Altera公司最新的SoPC(可编程片上系统)解决方案——Nios处理器软核为核心,配合GPS和GSM系统,对汽车的停放和运行状态进行监控。基于SoPC的汽车安全监控系统可广泛应用于汽车的防盗、日常维护和交通事故的处理,为车辆故障提供有效的测试手段。......
  • Spring Boot实现api接口加解密
    在SpringBoot应用中实现API接口的加解密,可以确保数据在传输过程中的安全性。通常,我们会使用HTTPS来加密传输层的数据,同时也可以在应用层对数据进行额外的加密和解密。以下是一个基本的实现步骤,包括使用HTTPS和应用层加密。使用HTTPSHTTPS是HTTP的安全版本,通过SSL/TLS协议......
  • 高并发IPC通信实现:HarmonyOS中的异步调用与多线程处理
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在当今的移动应用开发领域,高并发通信场......
  • HarmonyOS跨设备通信:多端协同的RPC数据传输实现
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在智能设备日益普及的今天,多设备协同工......