设计应该支持以下操作:

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

力扣-设计一个循环队列相关推荐

  1. 考研数据结构之队列(3.3)——练习题之设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空来设计队列的结构和相关基本运算算法(C表示)

    题目 设计一个循环队列,用front和rear分别作为队头和队尾指针,另外用一个标志tag表示队列是空还是不空,约定当tag为0时队空,当tag为1时队不空,这样就可以用front==rear作为队满 ...

  2. 如何设计一个循环队列

    文章目录 前言 一.思路 二.代码实现 1.MyCircularQueue(k) 构造方法 2.Front 从队首获取元素 3.Rear 获取队尾元素 4.enQueue(value) 向循环队列插入 ...

  3. [js] 使用js实现一个循环队列

    [js] 使用js实现一个循环队列 const queue = [] let queueRunning = false let loopTimer = null const loop = task = ...

  4. 消息中间件系列(七):如何从0到1设计一个消息队列中间件

    消息队列作为系统解耦,流量控制的利器,成为分布式系统核心组件之一. 如果你对消息队列背后的实现原理关注不多,其实了解消息队列背后的实现非常重要. 不仅知其然还要知其所以然,这才是一个优秀的工程师需要具 ...

  5. 高薪程序员面试题精讲系列127之如何设计一个消息队列?如何保证消息的执行顺序?

    一. 面试题及剖析 1. 今日面试题 如何保证消息队列中消息的执行顺序? RabbitMQ消息过期了怎么办? 如何设计一个消息队列? 如果让你自己设计一个消息队列,该怎么实现? 2. 题目剖析 壹哥在 ...

  6. 力扣Java编译器_力扣--设计单链表

    在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值.如果索引无效,则返回-1. addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点.插入 ...

  7. JAVA面试题:你怎么设计一个消息队列?

    1 面试题 写一个消息队列,你如何进行架构设计,说一下你的思路! 2 考点分析 一般面试官要考察两块: (1)你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个mq的架构原理 ...

  8. 用数组来实现一个循环队列

    1. 初始化 数组 头尾节点 2. 插入 3. 判满 需要预留一个位置,用于判断队列是否满了 如上图发现(rear+1)%maxSize == front;不再插入 4. 删除 如上直接移动front ...

  9. 力扣232-用栈实现队列(C++,附思路)

    二刷过了才敢过来写- 第一遍是真不会. 思路: 首先这个题的意思是只能用栈,所以不考虑用数组了. 栈是只能知道最后一个进栈的元素,而且没有迭代器可以访问内部元素:而队列相反,是只能知道头部的元素.所以 ...

最新文章

  1. CSS中的id选择器和class选择器简单介绍
  2. 【Harvest源码分析】GetF0CandidateContour函数
  3. I/O:OutputStream
  4. Delphi面向对象的可见性表示符
  5. php 404页面设置,ThinkPHP 404页面的设置方法
  6. mac 安装homebrew 并替换清华镜像
  7. python能开发android吗_用Python开发Android程序到底
  8. Dual Thrust策略
  9. Linux学习笔记之秋水BBR一键部署
  10. WIN7下安装IIS
  11. Laravel学习笔记(33)后台切换前台模板(修改默认的加载模版路径)
  12. 三地检方分别对程颖、谭元生、聂作坤案提起公诉
  13. ES设置用户名和密码
  14. 日记app怎么上传录制的视频
  15. 亚马逊AWS命令行 aws cli
  16. PL SQL中如何去掉字符串中重复的字符
  17. Euclidean division
  18. 给初学编程的业余爱好者——会堆积木就会编程
  19. 手机放哪里辐射危害最低
  20. Linux从头开始学--学习笔记9知识点补充-ubuntu,centos;在linux上创建c程序;linux基础命令,shell命令,vi命令,man帮助手册

热门文章

  1. mysql - 一键安装方式- 课堂版
  2. 转载 实践与分享:Windows 7怎么获取TrustedInstaller权限【图文教程】
  3. zabbix之监控mysql云服务
  4. CentOs6.5 修改主机名
  5. fasterflect-vs-hyperdescriptor-vs-fastmember-vs-reflection/
  6. 面试官系统精讲Java源码及大厂真题 - 02 String、Long 源码解析和面试题
  7. vue性能优化-------vendor优化详细用法(瘦身),减小体积,引入cdn
  8. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%
  9. MongoDB与Spring集成教程
  10. 解决MySQL 8.0 设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy require...