当前位置:网站首页>leetcode:622. 设计循环队列【循环队列板子】
leetcode:622. 设计循环队列【循环队列板子】
2022-08-02 17:49:00 【白速龙王的回眸】
设计思路
用一个数组模拟,要多留一个空位
front和rear记录头尾,注意rear是最后一个元素的后一个,初始都是0
空的话两个相等,满的话rear + 1 = front(mod k + 1)
然后最后一个元素注意是rear - 1(mod k + 1)取出来的
其他的话就双指针移动即可
Ac code
class MyCircularQueue:
# 循环队列学习
def __init__(self, k: int):
# 为了区分满和空,存储空间会多一个位置
self.front = self.rear = 0
self.elements = [0] * (k + 1)
def enQueue(self, value: int) -> bool:
if self.isFull():
return False
self.elements[self.rear] = value
self.rear = (self.rear + 1) % len(self.elements)
return True
def deQueue(self) -> bool:
if self.isEmpty():
return False
self.front = (self.front + 1) % len(self.elements)
return True
def Front(self) -> int:
return -1 if self.isEmpty() else self.elements[self.front]
def Rear(self) -> int:
return -1 if self.isEmpty() else self.elements[(self.rear - 1) % len(self.elements)]
def isEmpty(self) -> bool:
return self.front == self.rear
def isFull(self) -> bool:
return (self.rear + 1) % len(self.elements) == self.front
# 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()
总结
循环队列学习
边栏推荐
猜你喜欢
随机推荐
My recursive never burst stack
55.【sort函数的升序降序】
redis总结_基础
golang 源码分析(39)hystrix-go
攻防世界-favorite_number
2022最新版SSM源码分析:一套教程助你深入理解底层原理,提高核心竞争力!
Navicat 连接Oracle时提示oracle library is not loaded的问题解决
危及安全的常见物联网攻击有哪些?
ffmpeg cannot find libx264 after compilation
Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
透过案例看清API接口的作用——演示1688商品详情接口
天翼云4.0分布式云赋能千行百业数字化转型
golang刷leetcode 经典(6) 实现跳表
如何应对机器身份带来的安全风险
魔豹联盟:佛萨奇2.0dapp系统开发模式详情
小程序毕设作品之微信体育馆预约小程序毕业设计成品(6)开题答辩PPT
小程序毕设作品之微信体育馆预约小程序毕业设计成品(8)毕业设计论文模板
Interviewer: can you talk about optimistic locking and pessimistic locks
LeetCode 2333. 最小差值平方和(贪心)
新特性解读 | MySQL 8.0 GIPK 不可见主键