当前位置:网站首页>如何设计循环队列?快进来学习~
如何设计循环队列?快进来学习~
2022-08-01 23:58:00 【陈亦康】

分析:
两种解题思路,一种是计数法,还有一种是浪费空间法,为什么这么说呢,看下图:



解法一:
class MyCircularQueue {
public int[] array;
private int front;
private int rear;
private int usedSize;
public MyCircularQueue(int k) {
array = new int[k];
}
//插入数据
public boolean enQueue(int value) {
if(isFull()){
return false;
}
else{
array[rear] = value;
//不可以单纯的rear++;会溢出,就不是循环了
rear = (rear + 1) % array.length;
usedSize++;
return true;
}
}
//删除元素
public boolean deQueue() {
if(isEmpty()){
return false;
}
front = (front + 1) % array.length;
usedSize--;
return true;
}
//获取首元素
public int Front() {
if(isEmpty()){
return -1;
}
return array[front];
}
//获取尾元素
public int Rear() {
if(isEmpty()){
return -1;
}
return rear == 0 ? array[array.length - 1] : array[rear - 1];
}
//检查是否为空
public boolean isEmpty() {
if(usedSize == 0){
return true;
}
return false;
}
//是否为满
public boolean isFull() {
return usedSize == array.length;
}
}解法二:
class MyCircularQueue {
public int[] array;
private int front;
private int rear;
public MyCircularQueue(int k) {
array = new int[k + 1];
}
//插入数据
public boolean enQueue(int value) {
if(isFull()){
return false;
}
else{
array[rear] = value;
//不可以单纯的rear++;会溢出,就不是循环了
rear = (rear + 1) % array.length;
return true;
}
}
//删除元素
public boolean deQueue() {
if(isEmpty()){
return false;
}
front = (front + 1) % array.length;
return true;
}
//获取首元素
public int Front() {
if(isEmpty()){
return -1;
}
return array[front];
}
//获取尾元素
public int Rear() {
if(isEmpty()){
return -1;
}
return rear == 0 ? array[array.length - 1] : array[rear - 1];
}
//检查是否为空
public boolean isEmpty() {
if(rear == front){
return true;
}
return false;
}
//是否为满
public boolean isFull() {
return (rear + 1) % array.length == front;
}
}边栏推荐
猜你喜欢
随机推荐
DOM 事件及事件委托
FAST-LIO2代码解析(二)
mysql8安装make报错如何解决
Unity—四元数、欧拉角API+坐标系统
获取小猪民宿(短租)数据
[Three sons] C language implements simple three sons
Enterprise firewall management, what firewall management tools are there?
YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中[email protected]与
Flink Yarn Per Job - 提交流程一
security跨域配置
LeetCode_322_零钱兑换
Share an interface test project (very worth practicing)
【ACWing】406. 放置机器人
UI自动化测试框架搭建-标记性能较差用例
@Transactional 注解使用详解
如何优雅的消除系统重复代码
洞见云原生微服务及微服务架构浅析
yay 报错 response decoding failed: invalid character ‘<‘ looking for beginning of value;
Quartus uses tcl files to quickly configure pins
easy-excel 解决百万数据导入导出,性能很强









