当前位置:网站首页>LeetCode:622. 设计循环队列【模拟循环队列】
LeetCode:622. 设计循环队列【模拟循环队列】
2022-08-02 19:22:00 【星空皓月】
题目描述

思路
模拟循环队列即可,具体看代码注释
AC代码
class MyCircularQueue:
q = [0]
num = 0 # 当前队列元素个数
st = 0 # 队头, 队尾st + num - 1
len = 0 # 队列总大小
# 初始化循环队列大小
def __init__(self, k: int):
self.len = k
self.q = [0] * k # 初始化数组
# 入队
def enQueue(self, value: int) -> bool:
if self.isFull(): # 队满
return False
self.num += 1 # 队列元素个数+1
self.q[(self.st + self.num - 1) % self.len] = value # 将元素加入到队尾
return True
# 出队
def deQueue(self) -> bool:
if self.isEmpty(): # 队空
return False
self.num -= 1 # 队列元素个数-1
self.st = (self.st + 1) % self.len # 删除队首元素
return True
# 返回队首元素
def Front(self) -> int:
if self.isEmpty():
return -1
return self.q[self.st]
# 返回队尾元素
def Rear(self) -> int:
if self.isEmpty():
return -1
return self.q[(self.st + self.num - 1) % self.len]
# 判断队列是否为空
def isEmpty(self) -> bool:
if self.num == 0:
return True
return False
# 判断是否队满
def isFull(self) -> bool:
if self.num == self.len:
return True
return False
# Your MyCircularQueue object will be instantiated and called as such:
# obj = MyCircularQueue(k)
# param_1 = obj.enQueue(value)
# param_2 = obj.deQueue()
# param_3 = obj.Front()
# param_4 = obj.Rear()
# param_5 = obj.isEmpty()
# param_6 = obj.isFull()
边栏推荐
猜你喜欢
随机推荐
Based on OpenGL glaciers and firebird (illumination calculation model, visual, particle system)
Mysql基础篇(视图)
7.21 - 每日一题 - 408
golang刷leetcode动态规划(11)不同路径
什么是现场服务管理系统(FSM)?有什么好处?
我靠这套笔记自学,拿下字节50万offer....
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
【C语言刷题】牛客网刷题——替换空格
ShapeableImageView 的使用,告别shape、三方库
7.24 - 每日一题 - 408
实现客户服务自助,打造产品知识库
7.25 - 每日一题 - 408
线性表(顺序表和链表)
银保监会:人身险产品信披材料应由保险公司总公司统一负责管理
Golang sync/atomic 包的原子操作说明
openlayers不常用接口介绍
thinkphp框架5.0.23安全更新问题-漏洞修复-/thinkphp/library/think/App.php具体怎么改以及为什么要这么改
Fetch 请求不转换BLOB正常显示GBK编码的数据
详解卡尔曼滤波原理
7.23 - 每日一题 - 408









![[安洵杯 2019]easy_web](/img/26/c04bc8b9c65ac75ddd2696b48e1661.png)