当前位置:网站首页>[leetcode622]设计循环队列
[leetcode622]设计循环队列
2022-07-06 09:17:00 【劲腰傩舞】
虽然但是,基础的东西也写写
题目
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。
循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。
你的实现应该支持如下操作:
MyCircularQueue(k): 构造器,设置队列长度为 k 。
Front: 从队首获取元素。如果队列为空,返回 -1 。
Rear: 获取队尾元素。如果队列为空,返回 -1 。
enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
isEmpty(): 检查循环队列是否为空。
isFull(): 检查循环队列是否已满。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/design-circular-queue
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/design-circular-queue
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class MyCircularQueue {
int[] queue;
/*分别是头指针和尾指针*/
int front,rear;
int size;
public MyCircularQueue(int k) {
/*创建一个数组。要能够区分空队列和满队列的情况。需要多保留一位*/
/*头指针和尾指针重叠的时候表示空队列*/
/*尾指针指向队列最后一个节点的下一个位置*/
/*当尾指针的下一个位置是头指针的时候,队列满*/
/*所以会浪费一个位置*/
queue=new int[k+1];
front=rear=0;
/*队列的实际长度,用来计算头指针和尾指针移动后的位置*/
size=k+1;
}
public boolean isEmpty() {
return rear==front;
}
public boolean isFull() {
/*队列满的时候,由于是循环队列,尾指针可能在头指针的前面或者后边,所以需要取余操作*/
/*取余,考虑的是rear==size-1的情况*/
return (rear+1)%size==front;
}
public boolean enQueue(int value) {
if(isFull())
return false;
else{
queue[rear]=value;
rear=(rear+1)%size;
return true;
}
}
public boolean deQueue() {
if(isEmpty())
return false;
else {
front=(front+1)%size;
return true;
}
}
public int Front() {
if(isEmpty())
return -1;
else return queue[front];
}
public int Rear() {
if(isEmpty())
return -1;
/*括号中还需要+size,考虑的是rear==0的情况*/
else return queue[(rear-1+size)%size];
}
}
边栏推荐
- Intermediate use tutorial of postman [environment variables, test scripts, assertions, interface documents, etc.]
- 1081 rational sum (20 points) points add up to total points
- Navigator object (determine browser type)
- open-mmlab labelImg mmdetection
- Working principle of genius telephone watch Z3
- @The difference between Autowired and @resource
- Embedded startup process
- ES6语法总结--上篇(基础篇)
- 荣耀Magic 3Pro 充电架构分析
- Pytorch four commonly used optimizer tests
猜你喜欢
【ESP32学习-1】Arduino ESP32开发环境搭建
ESP8266使用arduino连接阿里云物联网
STM32 how to locate the code segment that causes hard fault
Générateur d'identification distribué basé sur redis
(一)R语言入门指南——数据分析的第一步
ESP8266连接onenet(旧版MQTT方式)
(三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析
Symbolic representation of functions in deep learning papers
Kconfig Kbuild
VSCode基础配置
随机推荐
ESP8266通过arduino IED连接巴法云(TCP创客云)
inline详细讲解【C语言】
vim命令行笔记
Programmers can make mistakes. Basic pointers and arrays of C language
Page performance optimization of video scene
.elf .map .list .hex文件
Analysis of charging architecture of glory magic 3pro
Custom view puzzle getcolor r.color The color obtained by colorprimary is incorrect
Oppo vooc fast charging circuit and protocol
Pytoch temperature prediction
程序员老鸟都会搞错的问题 C语言基础 指针和数组
ES6语法总结--上篇(基础篇)
MySQL占用内存过大解决方案
Stm32f1+bc20+mqtt+freertos system is connected to Alibaba cloud to transmit temperature and humidity and control LED lights
Gateway fails to route according to the service name, and reports an error service unavailable, status=503
JS function promotion and declaration promotion of VaR variable
Missing value filling in data analysis (focus on multiple interpolation method, miseforest)
@The difference between Autowired and @resource
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题
Detailed explanation of Union [C language]