622. 设计循环队列

2023-11-02

622. 设计循环队列

Java实现循环队列设计

题目描述

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。

循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。

你的实现应该支持如下操作:

MyCircularQueue(k): 构造器,设置队列长度为 k 。
Front: 从队首获取元素。如果队列为空,返回 -1 。
Rear: 获取队尾元素。如果队列为空,返回 -1 。
enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
isEmpty(): 检查循环队列是否为空。
isFull(): 检查循环队列是否已满。

示例:

MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3
circularQueue.enQueue(1); // 返回 true
circularQueue.enQueue(2); // 返回 true
circularQueue.enQueue(3); // 返回 true
circularQueue.enQueue(4); // 返回 false,队列已满
circularQueue.Rear(); // 返回 3
circularQueue.isFull(); // 返回 true
circularQueue.deQueue(); // 返回 true
circularQueue.enQueue(4); // 返回 true
circularQueue.Rear(); // 返回 4

本题学习了B站尚硅谷的Java数据结构与算法,基本能做出来
B站链接:https://www.bilibili.com/video/BV1E4411H73v?p=15&vd_source=3ebadd153351fa4f42c972dbf5d7ea06

代码实现

class MyCircularQueue {

    private int maxSize;//表示数组的最大容量
    private int front;//队列头
    private int rear;//队列尾
    private int[] arr;//该数组用于存放数据,模拟队列

    public MyCircularQueue(int k) {
        maxSize = k+1;
        arr = new int[maxSize];
        front = 0;
        rear = 0;
    }

    public boolean enQueue(int value) {
        if (isFull()) return false;
        arr[rear] = value;
        rear = (rear+1)%maxSize;
        return true;
    }

    public boolean deQueue() {
        if (isEmpty()) return false;
        front = (front+1)%maxSize;
        return true;
    }

    public int Front() {
        if (isEmpty()) return -1;
        return arr[front];
    }

    public int Rear() {
        if (isEmpty()) return -1;
        return arr[(rear-1+maxSize)%maxSize];
    }

    public boolean isEmpty() {
        return rear == front;
    }

    public boolean isFull() {
        return (rear+1)%maxSize == front;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

622. 设计循环队列 的相关文章

  • Android PhoneGap 插件,UI 选项卡栏,调整 WebView 大小

    我正在创建一个美味的 PhoneGap 插件 希望一旦它能被打开 准备好了 插件基本完成了 我只需要一个漂亮的用户界面 相互作用 简而言之 我想创建一个 本机 android 工具栏组件 如果您实现 PhoneGap UIControls
  • Maven 2:如何将当前项目版本打包在WAR文件中?

    我正在使用 Maven 2 构建我的 Java 项目 并且正在寻找一种向用户呈现 pom xml 当前版本号的方法 例如使用 Servlet 或 JSP 据我所知 最好的方法是 Maven 将版本号作为文本文件打包到 WAR 中 这使我能够
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 在Java中使用命令行编译多个包

    您好 我一直在使用 IDE 但现在我需要从命令行运行和编译 问题是我有多个软件包 我试图找到答案 但没有任何效果 所以我有 src Support java files Me java files Wrapers java files 你知
  • 使用 HttpUrlConnection Android 将 base64 编码的图像发送到服务器

    我正在尝试使用 HttpUrlConnection 将 base64 编码的图像发送到服务器 我遇到的问题是大多数图像均已成功发送 但有些图像会生成 FileNotFound 异常 我的图像编码代码可以在下面找到 public static
  • 无法在类对象的 ArrayList 中存储值。 (代码已编辑)

    这基本上是一个 Java 代码转换器 它涉及一个 GUI 让用户输入类类型 名称和方法 为了存储值 我创建了一个类VirtualClass与ArrayList
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • Java 正则表达式 - 字母数字,最多一个连字符,句点或下划线,七个字符长

    我是 Java 正则表达式工具的新手 尽管它们潜力巨大 但我很难完成这项任务 我想编写一个正则表达式来验证遵循以下语法的输入字符串 小写字母和数字的任意组合 仅一个下划线 一个破折号或一个句号 无其他特殊字符 最小长度为 5 我想出了以下解
  • RMI 中的引用传递问题? [复制]

    这个问题在这里已经有答案了 有人可以告诉我我错在哪里 为什么这个 RMI 聊天应用程序不起作用 目标是通过远程对象或序列化对象实现客户端 服务器和逻辑之间的解耦 import javax swing import java awt even
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • Intellij 中的 Google OR-Tools:UnsatisfiedLinkError

    我正在建立一个应该使用 Google OR Tools 的 java 框架 下面的代码编译成功 但在运行时抛出异常 Exception in thread main java lang UnsatisfiedLinkError com go
  • 异步迭代器

    我有以下代码 while slowIterator hasNext performLengthTask slowIterator next 由于迭代器和任务都很慢 因此将它们放入单独的线程中是有意义的 这是对迭代器包装器的快速而肮脏的尝试
  • 在 IntelliJ 中运行 Spring Boot 会导致 Unable to load 'javax.el.E​​xpressionFactory'

    我正在尝试运行一个简单的 Spring Boot 应用程序 该应用程序具有以下 Maven pom file
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • 如何初始化静态地图?

    你会如何初始化静态Map在Java中 方法一 静态初始化方法二 实例初始化 匿名子类 或者 还有其他方法吗 各自的优点和缺点是什么 这是说明这两种方法的示例 import java util HashMap import java util
  • 如何用表达式语言获取布尔属性?

    如果我有一堂这样的课 class Person private int age public int getAge return age public boolean isAdult return age gt 19 我可以得到age像这样
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个

随机推荐

  • 建立 PyQt6 窗口

    建立 PyQt6 窗口 这篇教学会介绍如何开始使用 PyQt6 建立基本的应用程序窗口 以及通过常用的窗口参数 进行窗口的相关设定 快速导航 建立 PyQt6 窗口 调整窗口样式 在窗口中放入其他组件 建立 PyQt6 窗口 PyQt6 创
  • ASP.NETCore WebApp + EFCore +Docker +MSSQL(Docker for Window)

    文章目录 一 本机环境 二 创建ASP NET Core WebApp 创建项目 添加模型 搭建基架 使用CoreFirst方式初始数据库架构 三 MSSQL Docker 拉取MSSQL Docker镜像 启动容器 环境要求 参数解析 连
  • socket failed: EPERM (Operation not permitted) 解决方法

    1 网络权限没有开启 2 不支持http 在AndroidManifest xml 中添加网络权限
  • 安全HCIP之IPX

    IPX Internetwork Packet Exchange protocol 互联网分组交换协议 IPX 是指互联网分组交换协议 提供分组寻址和选择路由的功能 保证可靠到达 相当于数据报的功能 SPX 是顺序报文分组交换协议 它可保证
  • C/C++ 代码编译过程【复习】

    C C 代码编译过程 很久很久没用过 C C 突然碰到编译过程 竟有些想不起来 这里复习一下 C 语言的编译链接过程要把我们编写的一个 C 程序 源代码 转换成可以在硬件上运行的程序 可执行代码 如汇编语言 机器语言 分两个部分 编译和链接
  • LLM系列

    简介 小伙伴们好 我是 小窗幽记机器学习 的小编 卖热干面的小女孩 紧接前文 万字长文细说ChatGPT的前世今生 后续会尝试以理论 实践的方式逐步对主流的各大LLM进行实测和汉化 今天这篇关于Llama2的小作文其实比较长 所以分为上下两
  • Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细)

    前言 首先我们先来回忆一下上两篇爬虫实战文章 第一篇 讲到了requests和bs4和一些网页基本操作 Python爬虫实战 1 爬取 房天下 租房信息 超详细 第二篇 用到了正则表达式 re模块 Python爬虫实战 2 爬取小说 斗罗大
  • linux磁盘虚拟化

    1 LVM Logical Volume Manager 逻辑滚动条管理员 LVM可以将几个实体的partions 或disk 透过软件组合成为一块看起来是独立的大磁盘 VG 然后将这块大磁盘再经过分割成为可使用分隔槽 LV 最终就能够挂载
  • 【SQL注入-可回显】报错注入:简介、相关函数、利用方法

    目录 一 定义 1 1 简介 1 2 利用 1 3 利用过程 1 4示例 注 二 相关函数 2 1 最常用的三种是 2 2 Xpath语法错误 extractvalue updatexml 2 3 数据溢出 exp 2 4 主键重复 原理
  • php 大转盘抽奖概率 角度,在线抽奖大转盘和概率计算

    html gt 抽奖效果演示 rotary position relative width 854px height 504px margin 0 auto background d71f2e url p w picpaths bg1 pn
  • 3D游戏编程设计作业九

    P D 过河游戏智能帮助实现 程序具体要求 实现状态图的自动生成 讲解图数据在程序中的表示方法 利用算法实现下一步的计算 状态图分析 此次作业的代码基于第三次作业 牧师与魔鬼的动作分离版代码进行改进 加入了智能提示功能 实现效果图如下 要实
  • Android ImageView视图的七种图片缩放类型

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 ImageView默认图片居中显示 默认图片的缩放类型为 scaleType属性为 fitCenter 一 scaleType属性
  • 【严重】vm2 <3.9.18 沙箱逃逸漏洞(存在POC)

    漏洞描述 vm2 是一个基于 Node js 的沙箱环境 可以使用列入白名单的 Node 内置模块运行不受信任的代码 代理对象用于拦截并重定义宿主对象的各种操作 vm2 3 9 18之前版本中 由于 prepareStackTrace 函数
  • 【转】OSI TCP/IP 浅析

    OSI是Open System Interconnect的缩写 意为开放式系统互联 国际标准组织 国际标准化组织 制定了OSI模型 这个模型把网络通信的工作分为7层 分别是物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 一 网络
  • unity控制物体显示和隐藏的方法总结

    首先是物体的获取 代码如下 GameObject Find SampleAnchorMe 找到并返回一个名字为SampleAnchorMe的游戏物体 不能用于inactive的物体即隐藏的物体无法用find发现 GameObject Fin
  • 4:eMMC command

    1 前言 本文主要对eMMC的command进行详细介绍 主要包含如下内容 1 command类型 2 command格式 2 command类型 command类型 说明 bc 不带response的广播命令 bcr 带有response
  • 华为机试C语言-最长方连续方波信号

    题目描述 https zhuanlan zhihu com p 546563566 代码分层有利于代码调试 include
  • Okhttp设置公共参数,以json对象放入@Body请求公共参数的配置方式

    当网络请求都是基于一个URL 所有的接口都是同一个地址 而请求不同接口数据则是通过command字段进行配置 然后所有的请求参数都是需要自己写一个bean类 再转成json格式放入请求body里发给后台 而不是通过表单form body发送
  • MySQL之MVCC

    事务隔离级别 对于一个MySQL服务 可以有多个客户端与其建立连接 并向其发送SQL语句 一条SQL语句可能是一个事务的一部分 MySQL可以同时处理客户端的多个事务 一次事务对应着一次完成的状态转换 事务执行完毕后 需要保证数据符合客观逻
  • 622. 设计循环队列

    622 设计循环队列 Java实现循环队列设计 题目描述 设计你的循环队列实现 循环队列是一种线性数据结构 其操作表现基于 FIFO 先进先出 原则并且队尾被连接在队首之后以形成一个循环 它也被称为 环形缓冲器 循环队列的一个好处是我们可以