Python描述数据结构之队列实战篇

文章目录前言1. LeetCode933:最近的请求次数2. LeetCode641:设计循环双端队列3. LeetCode622:设计循环队列结束语

前言

  LeetCode中有关队列的题目。

1. LeetCode933:最近的请求次数

  LeetCode的第933题:最近的请求次数。
  这个题首先要读懂题|ू・ω・` ),题的意思可以理解为有一个队列,然后计算队列元素在区间[t-3000,3000]内的的个数。代码如下:

class RecentCounter:
def __init__(self):
self.queue = []

def ping(self, t):
self.queue.append(t)
while self.queue[0] < t - 3000:
self.queue = self.queue[1:]
return len(self.queue)

  运行结果如下:
Python描述数据结构之队列实战篇

2. LeetCode641:设计循环双端队列

  LeetCode的第641题:设计循环双端队列。
  这个题主要就是借助Python里面的collections库里面的deque类来构建双端队列,下面就介绍deque类里面几个常用的方法:

方法 功能

collections.deque(maxlen)
初始化一个最大长度为

maxlenmaxlen

maxlen双端队列,当双端队列已经满时,再插入数据,就会有相应个数的数据从另一端出来

append(value)
添加

valuevalue

value到右端

appendleft(value)
添加

valuevalue

value到左端

pop()
移除最右侧的元素

popleft()
移除最左侧的元素

extend(iterable)
在队列右侧添加

iterableiterable

iterable中的元素

extendleft(iterable)
在队列左侧添加

iterableiterable

iterable中的元素(

iterableiterable

iterable参数的顺序将会反过来添加)

  除此之外还有clear()copy()count()index()insert()remove()reverse(),这里就不一一介绍了。

  代码如下:

class MyCircularDeque:

def __init__(self, k):
from collections import deque
self.length = k
self.queue = deque(maxlen=self.length)

def insertFront(self, value):
if self.isFull():
return False
else:
self.queue.appendleft(value)
return True

def insertLast(self, value):
if self.isFull():
return False
else:
self.queue.append(value)
return True

def deleteFront(self):
if self.isEmpty():
return False
else:
self.queue.popleft()
return True

def deleteLast(self):
if self.isEmpty():
return False
else:
self.queue.pop()
return True

def getFront(self):
if self.isEmpty():
return -1
else:
return self.queue[0]

def getRear(self):
if self.isEmpty():
return -1
else:
return self.queue[-1]

def isEmpty(self):
if len(self.queue) == 0:
return True
else:
return False

def isFull(self):
if len(self.queue) == self.length:
return True
else:
return False

  运行结果如下:

Python描述数据结构之队列实战篇

3. LeetCode622:设计循环队列

  LeetCode的第622题:设计循环队列。
  有关循环队列的操作及代码实现,请参考的我的这篇博客,这里不再叙述,代码如下:

class MyCircularQueue:

def __init__(self, k: int):
self.length = k + 1
self.queue = [None] * self.length
self.front = 0
self.rear = 0

def enQueue(self, value):
if self.isFull():
return False
else:
self.queue[self.rear] = value
self.rear = (self.rear + 1) % self.length
return True

def deQueue(self):
if self.isEmpty():
return False
else:
self.front = (self.front + 1) % self.length
return True

def Front(self):
if self.isEmpty():
return -1
else:
return self.queue[self.front]

def Rear(self):
if self.isEmpty():
return -1
else:
return self.queue[self.rear-1]

def isEmpty(self):
if self.front == self.rear:
return True
else:
return False

def isFull(self):
if (self.rear + 1) % self.length == self.front:
return True
else:
return False

  运行结果如下:

Python描述数据结构之队列实战篇

结束语

  队列的题貌似不太多(也许是没有找到),就选了这几个常规题先简单练习一下,大致感觉简单的队列就直接用列表,双端队列就直接使用collections库里面的deque类,其他的暂时还没有想到,嘿嘿。

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Python描述数据结构之队列实战篇

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Python描述数据结构之队列实战篇
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏