LeetCode如何实现循环队列

小编给大家分享一下LeetCode如何实现循环队列,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、成都网站设计、北关网络推广、微信小程序定制开发、北关网络营销、北关企业策划、北关品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供北关建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

队列是典型的先进先出(FIFO)结构,插入(insert)也叫做入队(enqueue),新元素从队尾插入。删除(delete)也叫做出队(dequeue),从队首移除

LeetCode如何实现循环队列

LeetCode如何实现循环队列  
 

队列

队列可以利用Python中的数组实现,包含如下函数:

  • enqueue:入队

  • dequeue:出队

  • isEmpty:判断是否为空

  • size:队列长度(元素个数)

LeetCode如何实现循环队列

LeetCode如何实现循环队列  
 

循环队列

循环队列也是一种线性结构,同样基于FIFO原则,只不过队尾被连接在了队首之后形成了一个循环,也被称之为“环形缓冲器”

循环队列的一个优点在于:可以利用这个队列之前用过的空间

循环队列是要设置总长度容量的

循环队列包含的函数:

  • MyCircularQueue(k):构造一个长度为k的循环队列

  • Front:获取队首元素

  • Rear:获取队尾元素

  • enqueue(value):向循环队列插入一个元素,若成功则返回True

  • dequeue():从循环队列中删除一个元素,成功则返回True

  • isFull():检查循环队列是否为已满

  • isEmpty():判断循环队列是否为空

示例:

LeetCode如何实现循环队列

 

实现思路

LeetCode如何实现循环队列

首先循环队列是个“环”,利用python的数组模拟,通过操作数组的索引构建一个虚拟的环。对于循环队列而言,总长度是固定的(即数组的容量是固定的),任何位置都可以是队列的队首,利用队首索引可以利用如下公式推导出队尾索引:

tail_index = (head_index + count -1) % capacity

公式中的参数:

  • tail_index:队尾索引

  • head_index:队首索引

  • count:队列长度(即实际元素个数)

  • capacity:数组容量

LeetCode如何实现循环队列

 
 

循环队列小结

1. 队尾索引由队头索引公式得到

tail_index = (head_index + count -1) % capacity
2. 设置数组容量  capacity
3. 队列长度  count  (实际元素个数)
4.  “循环”实现的关键    % capacity
5. “插入”是队尾移动,“删除”是队头移动


以上是“LeetCode如何实现循环队列”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


本文标题:LeetCode如何实现循环队列
标题网址:http://scyanting.com/article/jghgih.html