文章目录
LC622 设计循环队列
我的力扣题解(第一次写题解QAQ)
我的刷题笔记
设计循环队列
1.读题
设计你的循环队列(也被称为“环形缓冲器”)实现。
循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。
本题我们要实现支持如下操作的方法
MyCircularQueue(k)
: 构造器,设置队列长度为 k 。Front
: 从队首获取元素。如果队列为空,返回 -1 。Rear
: 获取队尾元素。如果队列为空,返回 -1 。enQueue(value)
: 向循环队列插入一个元素。如果成功插入则返回真。deQueue()
: 从循环队列中删除一个元素。如果成功删除则返回真。isEmpty()
: 检查循环队列是否为空。isFull()
: 检查循环队列是否已满。
2.解题思路
本题考查封装思想~
【1】设计队列需要一个队列元素数量计数器——来进行队列判满 判空操作
【2】要写好构造器!(包括头指针 尾指针 队列元素数量计数器)
【3】设计时的重点就是对头指针和尾指针的操作了
3.代码逻辑
这题没啥逻辑好说了
1.先写构造器
【1】队列容量
【2】头指针
【3】尾指针
【4】当前队列中的元素个数
2.之后进行队列的初始化(定好是多长的队列)
3.之后写好入队 出队的方法就行 别忘了return false 和 true
4.获取队头&尾的元素 更简单辽
5.判空 判满 这。。就一个if就完事了哦
4.Java代码
class MyCircularQueue {
int[] arr;//定义队列数组
int size;//定义好队列的总容量!
int head;//头指针
int tail;//尾指针
int count;//计数器 用来记录现在队列中有多少元素
public MyCircularQueue(int k) {
//写好构造器!
this.arr = new int[k];
size = k;
this.head = 0;