力扣-设计一个循环队列
设计应该支持以下操作:
- MyCircularQueue(k): 构造器,设置队列长度为 k 。
- Front: 从队首获取元素。如果队列为空,返回 -1 。
- Rear: 获取队尾元素。如果队列为空,返回 -1 。
- enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
- deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
- isEmpty(): 检查循环队列是否为空。
- isFull(): 检查循环队列是否已满。
代码实现:
class MyCircularQueue {public int[] elem;public int front;public int rear;public MyCircularQueue(int k) {this.elem = new int[k+1];}//入队列public boolean enQueue(int value) {if(isFull()){return false;}this.elem[this.rear] = value;this.rear = (this.rear+1)%this.elem.length;return true;}//出队列public boolean deQueue() {if (isEmpty()){return false;}this.front = (this.front+1)%this.elem.length;return true;}//返回队列的头部元素public int Front() {if (isEmpty()){return -1;}return this.elem[this.front];}//返回队列尾部元素public int Rear() {if (isEmpty()){return -1;}int index = this.rear == 0 ? this.elem.length-1 : this.rear-1;return this.elem[index];}//判断队列是否为空public boolean isEmpty() {return this.rear == this.front;}//循环队列是否是满的public boolean isFull(){if ((this.rear+1)%this.elem.length == this.front){return true;}return false;}
}
力扣-设计一个循环队列相关推荐
- 考研数据结构之队列(3.3)——练习题之设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空来设计队列的结构和相关基本运算算法(C表示)
题目 设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空,约定当tag为0时队空,当tag为1时队不空,这样就可以用front==rear作为队满 ...
- 如何设计一个循环队列
文章目录 前言 一.思路 二.代码实现 1.MyCircularQueue(k) 构造方法 2.Front 从队首获取元素 3.Rear 获取队尾元素 4.enQueue(value) 向循环队列插入 ...
- [js] 使用js实现一个循环队列
[js] 使用js实现一个循环队列 const queue = [] let queueRunning = false let loopTimer = null const loop = task = ...
- 消息中间件系列(七):如何从0到1设计一个消息队列中间件
消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一. 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要. 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具 ...
- 高薪程序员面试题精讲系列127之如何设计一个消息队列?如何保证消息的执行顺序?
一. 面试题及剖析 1. 今日面试题 如何保证消息队列中消息的执行顺序? RabbitMQ消息过期了怎么办? 如何设计一个消息队列? 如果让你自己设计一个消息队列,该怎么实现? 2. 题目剖析 壹哥在 ...
- 力扣Java编译器_力扣--设计单链表
在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值.如果索引无效,则返回-1. addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点.插入 ...
- JAVA面试题:你怎么设计一个消息队列?
1 面试题 写一个消息队列,你如何进行架构设计,说一下你的思路! 2 考点分析 一般面试官要考察两块: (1)你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个mq的架构原理 ...
- 用数组来实现一个循环队列
1. 初始化 数组 头尾节点 2. 插入 3. 判满 需要预留一个位置,用于判断队列是否满了 如上图发现(rear+1)%maxSize == front;不再插入 4. 删除 如上直接移动front ...
- 力扣232-用栈实现队列(C++,附思路)
二刷过了才敢过来写- 第一遍是真不会. 思路: 首先这个题的意思是只能用栈,所以不考虑用数组了. 栈是只能知道最后一个进栈的元素,而且没有迭代器可以访问内部元素:而队列相反,是只能知道头部的元素.所以 ...
最新文章
- CSS中的id选择器和class选择器简单介绍
- 【Harvest源码分析】GetF0CandidateContour函数
- I/O:OutputStream
- Delphi面向对象的可见性表示符
- php 404页面设置,ThinkPHP 404页面的设置方法
- mac 安装homebrew 并替换清华镜像
- python能开发android吗_用Python开发Android程序到底
- Dual Thrust策略
- Linux学习笔记之秋水BBR一键部署
- WIN7下安装IIS
- Laravel学习笔记(33)后台切换前台模板(修改默认的加载模版路径)
- 三地检方分别对程颖、谭元生、聂作坤案提起公诉
- ES设置用户名和密码
- 日记app怎么上传录制的视频
- 亚马逊AWS命令行 aws cli
- PL SQL中如何去掉字符串中重复的字符
- Euclidean division
- 给初学编程的业余爱好者——会堆积木就会编程
- 手机放哪里辐射危害最低
- Linux从头开始学--学习笔记9知识点补充-ubuntu,centos;在linux上创建c程序;linux基础命令,shell命令,vi命令,man帮助手册
热门文章
- mysql - 一键安装方式- 课堂版
- 转载 实践与分享:Windows 7怎么获取TrustedInstaller权限【图文教程】
- zabbix之监控mysql云服务
- CentOs6.5 修改主机名
- fasterflect-vs-hyperdescriptor-vs-fastmember-vs-reflection/
- 面试官系统精讲Java源码及大厂真题 - 02 String、Long 源码解析和面试题
- vue性能优化-------vendor优化详细用法(瘦身),减小体积,引入cdn
- Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%
- MongoDB与Spring集成教程
- 解决MySQL 8.0 设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy require...