当前位置:网站首页>LeetCode 622 设计循环队列[数组 队列] HERODING的LeetCode之路
LeetCode 622 设计循环队列[数组 队列] HERODING的LeetCode之路
2022-08-02 19:37:00 【HERODING23】
解题思路
解决本题的关键在于定义好数据结构类型,首先定义一个长度为k的数组,再定义几个变量,当前要插入节点的下标index,当前队列长度len,以及最大队列容量n,入队列首先判断是否满,不满就往index位置插入即可,出队列直接len–,不需要对删除的数进行操作,获取队首元素就需要从index位置往前数len的长度,注意是循环数组,所以有取余操作,队尾就是index的前一个位置的数,也需要注意取余操作,最后就是判断空和满的函数,直接根据len是否为0或者n进行返回,代码如下:
代码
class MyCircularQueue {
private:
vector<int> q;
int len;
int n;
int index;
public:
MyCircularQueue(int k) {
q = vector<int>(k, 0);
len = 0;
index = 0;
n = k;
}
bool enQueue(int value) {
if(len < n) {
q[index] = value;
index ++;
index %= n;
len ++;
return true;
}
return false;
}
bool deQueue() {
if(len == 0) {
return false;
}
len --;
return true;
}
int Front() {
if(len == 0) {
return -1;
}
return q[(index + n - len) % n];
}
int Rear() {
if(len == 0) {
return -1;
}
return q[(index + n - 1) % n];
}
bool isEmpty() {
return len == 0;
}
bool isFull() {
return len == n;
}
};
/** * Your MyCircularQueue object will be instantiated and called as such: * MyCircularQueue* obj = new MyCircularQueue(k); * bool param_1 = obj->enQueue(value); * bool param_2 = obj->deQueue(); * int param_3 = obj->Front(); * int param_4 = obj->Rear(); * bool param_5 = obj->isEmpty(); * bool param_6 = obj->isFull(); */
边栏推荐
- golang刷leetcode 数学(1) 丑数系列
- SQL Server数据类型转换函数cast()和convert()详解
- 笑话:如果你在河边等待得足够久,你会看到你的敌人的尸体漂过,是怎么翻译出来的?
- PG's SQL execution plan
- Electron User Guide Beginning Experience
- Geoserver+mysql+openlayers
- You want the metagenomics - microbiome knowledge in all the (2022.8)
- Geoserver+mysql+openlayers2
- 看完这篇,轻松get限流!
- 一款好用的FAQ搭建工具
猜你喜欢
2022-07-27
Electron使用指南之初体验
J9数字货币论:识别Web3新的稀缺性:开源开发者
Redis 5 种数据结构及对应使用场景
Mysql安装流程 【压缩版】
Leetcode刷题——字符串相加相关题目(415. 字符串相加、面试题 02.05. 链表求和、2. 两数相加)
译出我精彩 | 7月墨力翻译计划获奖名单公布
TPAMI2022 | TransCL:基于Transformer的压缩学习,更灵活更强大
Therapy | How to Identify and Deal with Negative Thoughts
openlayers version update difference
随机推荐
SQL Server安装教程
SQL server有什么认证吗?
J9数字货币论:识别Web3新的稀缺性:开源开发者
Geoserver+mysql+openlayers
J9数字论:互联网跨链桥有什么作用呢?
GNN教程:图神经网络基础知识!
服务器Centos7 静默安装Oracle Database 12.2
Electron使用指南之初体验
golang刷leetcode 经典(13) 最小高度树
磁盘分区的知识
银保监会:人身险产品信披材料应由保险公司总公司统一负责管理
「面试必会」这应该是最有深度的TCP三次握手、四次挥手细节讲解
实现客户服务自助,打造产品知识库
Parse common methods in the Collection interface that are overridden by subclasses
Therapy | How to Identify and Deal with Negative Thoughts
In action: 10 ways to implement delayed tasks, with code!
MOSN 反向通道详解
NC | 土壤微生物组的结构和功能揭示全球湿地N2O释放
spack install报错/tmp/ccBDQNaB.s: Assembler message:
2022-07-28