当前位置:网站首页>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()
边栏推荐
猜你喜欢
随机推荐
Geoserver + mysql + openlayers problem
JVM内存和垃圾回收-05.虚拟机栈
Redis 5 种数据结构及对应使用场景
A Review of Nature Microbiology: Focusing on the Algae--Ecological Interface of Phytoplankton-Bacteria Interactions
让你的应用完美适配平板
如何ES源码中添加一个自己的API 流程梳理
shell:条件语句
Mysql安装流程 【压缩版】
元旦快乐(2022)
Geoserver+mysql+openlayers2
openlayers版本更新差别
es DELETE index 源码分析
7.25 - 每日一题 - 408
ABAP语法小复习
golang刷leetcode 经典(9)为运算表达式设计优先级
健康报告-设计与实现
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
spack install reports an error /tmp/ccBDQNaB.s: Assembler message:
【心理学 · 人物】第一期
如何正确地配置入口文件?