【LeetCode-简单题KMP】232. 用栈实现队列

news2024/11/17 5:39:06

文章目录

    • 题目
    • 方法一:用输入栈和输出栈模拟队列

题目

在这里插入图片描述

方法一:用输入栈和输出栈模拟队列

  1. 只有输出栈为空的时候才能将输入栈的元素补充到输出栈,
  2. 否则输出栈不为空,如果再从输入栈往输出栈填充元素,就会弄乱队列的先进先出规则,
  3. 而且当输出栈为空需要从输入栈补充元素时,必须一次性将输入栈的元素都弹出并且加到输出栈

在这里插入图片描述

class MyQueue {
    Stack<Integer> inStack;//入栈
    Stack<Integer> outStack;//出栈
    public MyQueue() {
          inStack = new Stack<>();
          outStack = new Stack<>();
    }
    //入队
    public void push(int x) {
        inStack.push(x);
    }
    //出队
    public int pop() {
        dumpstackIn(); // 如果stackOut为空,那么将stackIn中的元素全部放到stackOut中
        return outStack.pop();
    }
    //队首元素
    public int peek() {
        dumpstackIn(); // 如果stackOut为空,那么将stackIn中的元素全部放到stackOut中
        return outStack.peek();
    }
    //判空
    public boolean empty() {
     return inStack.isEmpty() && outStack.isEmpty();
    }

    // 如果stackOut为空,那么将stackIn中的元素全部放到stackOut中
    private void dumpstackIn(){
        if (!outStack.isEmpty()) return; //如果输出栈 有元素  则不需要将输入栈的元素放到输出栈
        while (!inStack.isEmpty()){ //否则 输出栈没有元素,那么当执行pop 或peek的时候 ,就需要把输入栈的元素逆序放到输出栈供pop 或peek使用
                outStack.push(inStack.pop());
        }
    }
}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zotero的下载与使用

Zotero的下载与使用 一、Zotero的下载二、Zotero的使用1、导入文献&#xff08;1&#xff09;直接拖入&#xff08;2&#xff09;在线导入 2、wps插入文献参考3、联动sci hub 实现英文文献一键批量下载 一、Zotero的下载 下载官网&#xff1a;https://www.zotero.org/ 下载地址…

关于feign调用之间boolean类型的序列化问题

报错内容是这样的&#xff1a;这是controller层 这是feign调用层&#xff1a; 调试出错1&#xff1a; 调试出错2&#xff1a; 解决办法&#xff1a;

Pytorch史上最全torch全版本离线文件下载地址大全(9月最新)

以下为pytorch官网的全版本torch文件离线下载地址 torch全版本whl文件离线下载大全https://download.pytorch.org/whl/torch/其中的文件版本信息如下所示&#xff08;部分版本信息&#xff0c;根据需要仔细寻找进行下载&#xff09;&#xff1a;

STM32F4X UCOSIII 消息队列

STM32F4X UCOSIII 消息队列 消息队列消息队列的作用消息队列工作机制消息队列创建消息发送消息发送模式FIFO(先进先出)LIFO(后进先出) 消息接收消息队列删除消息队列常用函数消息队列创建函数消息队列发送函数消息队列接收函数消息队列删除函数 UCOSIII 消息队列例程 消息队列 …

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…

【c语言】指针和数组笔试题

1.指针和数组笔试题解析 一维数组 int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));//a单独放在sizeof内表示求整个数组的字节-----16printf("%d\n", sizeof(a 0));//a不是单独放在sizeof内部&#xff0c;表明是首元素的地址&#xff0c;地址占4/8个字节…

五个很实用的IDEA使用技巧

日常开发中&#xff0c;相信广大 Java 开发者都使用过 IntelliJ IDEA 作为开发工具&#xff0c;IntelliJ IDEA 是一款优秀的 Java 集成开发环境&#xff0c;它提供了许多强大的功能和快捷键&#xff0c;可以帮助开发者提高编码效率和质量。除了一些常见的技巧&#xff0c;如自动…

[篇五章五]-如何禁用 Windows Defender-我的创作纪念日

################################################## 目录 禁用掉烦人的 Windows Defender 在本地组策略编辑器中禁用 Windows Defende 关闭 Microsoft Defender 防病毒 禁止 Defender 开机自动运行 重新激活 Windows Defender #######################################…

字符串函数和内存函数详解(2)

&#x1f435;本文会将会对剩余的字符串库函数和内存函数进行讲解 1.strstr&#x1f4da; 1.1函数用法✏️ strstr函数原型&#xff1a; strstr用于在字符串中找子串&#xff0c;strstr会返回str1中出现str2的起始地址&#xff0c;如果在str1中没有找到str2&#xff0c;则返回…

FreeRTOS移植以及核心功能

文章目录 freertos和ucos区别&#xff0c;优缺点比较移植步骤核心功能内存管理&#xff08;5种内存管理策略&#xff09;FreeRTOS任务调度算法有三种时间管理通信管理 栈管理 freertos和ucos区别&#xff0c;优缺点比较 FreeRTOS&#xff08;Free Real-Time Operating System&…

jdk20 download 配置(linux window mac)

download 直达链接 jdk20,17 wget https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.deb # 类似格式替换包的名称就可以实现终端下载jdk下载登录/oracle账号 下载jdk有可能存在要求登录帐号的情况 # 好心人的帐号 账号&#xff1a; 59968873qq.com 密码&…

数据库基本概念与安装MySQL数据库

MySQL数据库基本操作与简单管理 1、数据库的基本概述1.1数据库背景1.2数据库组成1.3数据库发展1.4数据库组成1.5数据库的数据流向1.6数据库功能1.7DBMS的工作模式 2、关系性数据库和非关系性数据库2.1关系型数据库2.2非关系型数据库2.3关系型数据库和非关系型数据库的区别 3、编…

“Vue进阶:深入理解插值、指令、过滤器、计算属性和监听器“

目录 引言&#xff1a;Vue的插值Vue的指令Vue的过滤器Vue的计算属性和监听器vue购物车案例总结&#xff1a; 引言&#xff1a; Vue.js是一款流行的JavaScript框架&#xff0c;它提供了许多强大的功能来简化前端开发。在本篇博客中&#xff0c;我们将深入探讨Vue的一些高级特性…

【计算机基础知识】计算机的概念

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言1.计算机的概念计算机的发展历程知识拓展&#xff1a; 计算机的特点计算机的分类 2.计算机的应用计算机的发展趋势知识拓展: 总结 前言 美…

双翌保养码使用指南方法三

保养码使用指南方法三&#xff1a;WiseAlign版本 为了保障您能够顺利使用软件&#xff0c;使之正常运行和合规使用&#xff0c;如何正确使用保养码显得尤为重要。以下是针对 WiseAlign软件的保养码使用指南&#xff0c;帮助您顺利进行激活操作。 步骤一&#xff1a;打开软件并…

uniapp:不同权限设置不同的tabBar

1、在pages.json里&#xff0c;将所有tabBar涉及的页面都加进来。 我这里使用username来动态显示tabBar。 jeecg用户显示&#xff1a;首页&#xff0c;订单&#xff0c;消息&#xff0c;发现&#xff0c;我的&#xff0c;一共5个tabBar。 admin用户显示&#xff1a;首页&…

喜报:项目验收季之陕西融通军民服务社会议室大屏系统项目建设顺利通过竣工验收

由达之云承建的陕西融通军民服务社会议室大屏系统项目建设日前完满完成各项建设任务&#xff0c;建设成果达到预期项目建设目标&#xff0c;并于9月19日顺利通过项目竣工验收。 陕西融通军民服务社有限公司会议大屏系统建设项目为大会议室增加一套视频会议系统&#xff0c;将原…

同为科技(TOWE)工业用插头插座及配电箱产品选型推荐

工业用插头插座及配电箱产品是专用于工业环境中的电源连接和电气设备控制&#xff0c;与普通家用插头插座相比&#xff0c;通常具有更高的功率和电流容量&#xff0c;并且设计上考虑了耐用性、安全性和适应各种环境条件的能力。工业用插头插座产品类型多样&#xff0c;包括插头…

【数仓建设系列之六】数仓管理利器-数据中台

【数仓建设系列之六】数仓管理利器-数据中台介绍 相信看过前面几篇数仓建设系列文章的同学已经对什么是数仓以及如何建设数仓有了充分的认知和了解了&#xff0c;那么问题很多的小明就要问了&#xff0c;既然数仓已经建设起来了&#xff0c;那企业如何管理运营数仓呢&#xff1…

WorkPlus打造智慧企业移动门户,开启高效办公新时代

在移动互联网时代&#xff0c;企业对于高效办公和便捷访问的需求不断增长。WorkPlus作为领先的品牌&#xff0c;致力于打造智慧企业移动门户&#xff0c;帮助企业实现高效协作与便捷访问。本文将重点介绍WorkPlus如何通过创新解决方案&#xff0c;为企业提供定制化的智慧移动门…