622. 设计循环队列

news/2024/11/15 4:50:30/

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;}
}

http://www.ppmy.cn/news/82248.html

相关文章

mysql执行计划explain

mysql 执行计划 explain 介绍 mysql8.0为例:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html EXPLAIN为语句中使用的每个表返回一行信息 SELECT。它按照 MySQL 在处理语句时读取它们的顺序列出输出中的表。这意味着 MySQL 从第一个表中读取一行&…

牛牛截图控件与利洽远程控制产品升级-支持证书自动升级

今天我们来聊一聊浏览器控件的一个痛点!看看我们是如何解决他的。 背景信息 目前市面上存在多种浏览器,IE、Chrome、Firefox、Edge以及一众国产浏览器,这些浏览器中,IE支持ActiveX,部分国产浏览器支持npapi&#xff…

前端架构师-week7-B端项目需求分析和架构设计

标题 B端项目需求分析 和 架构设计 将收获什么 做怎样的项目完成瓶颈期的突破 怎样从需求中寻找关键难点 怎样写技术解决方案 怎样进行基础的技术选型 关键词 挖掘难点 - 找到项目中的痛点 技术解决方案 - 以文档的形式创造可追溯的思考模型 业务组件库 - 多项目复用的业务组…

LIN-报文结构

文章目录 协议规范一、字节场二、报文头(HEADER FIELDS)同步间隔(synchronisation break)同步场(SYNCH FIELD)标识符场(IDENTIFIER FIELD) 三、数据场(DATE FIELDS)四、校…

1096 Consecutive Factors(22行代码+详细注释)

分数 20 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3567, where 5, 6, and 7 are the three consecutive numbers. Now g…

effective c++ 18 让接口容易被正确使用, 不易被误用

effective c 18 让接口容易被正确使用, 不易被误用 在本节中作者建议大家在写代码的时候要提供的接口需要拥有正确性和易用性。 写代码时你可能根据第一感觉就写出了一个接口,这个时候你可能需要再思考思考这个接口是否好用, 是否可能被误用…

单体项目偶遇并发漏洞!短短一夜时间竟让老板蒸发197.83元

事先声明:以下故事基于真实事件而改编,如有雷同,纯属巧合~ 眼下这位正襟危坐的男子,名为小竹,他正是本次事件的主人公,也即将成为熊猫集团的被告,嗯?这究竟怎么一回事?欲…

容器编排器们的自我介绍

哈喽大家好,我是咸鱼 咸鱼在《一文带你了解容器技术的前世今生》有介绍过容器技术的由来以及Docker项目的发展 我们知道,Docker 及其他容器技术能够极大地简化应用程序的部署,做到了”开箱即用“ 俗话说:”凡是具有两面性“。容…