小编给大家分享一下LeetCode如何实现循环队列,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
队列是典型的先进先出(FIFO)结构,插入(insert)也叫做入队(enqueue),新元素从队尾插入。删除(delete)也叫做出队(dequeue),从队首移除
队列
队列可以利用Python中的数组实现,包含如下函数:
enqueue:入队
dequeue:出队
isEmpty:判断是否为空
size:队列长度(元素个数)
循环队列
循环队列也是一种线性结构,同样基于FIFO原则,只不过队尾被连接在了队首之后形成了一个循环,也被称之为“环形缓冲器”
循环队列的一个优点在于:可以利用这个队列之前用过的空间
循环队列是要设置总长度容量的
循环队列包含的函数:
MyCircularQueue(k):构造一个长度为k的循环队列
Front:获取队首元素
Rear:获取队尾元素
enqueue(value):向循环队列插入一个元素,若成功则返回True
dequeue():从循环队列中删除一个元素,成功则返回True
isFull():检查循环队列是否为已满
isEmpty():判断循环队列是否为空
示例:
实现思路
首先循环队列是个“环”,利用python的数组模拟,通过操作数组的索引构建一个虚拟的环。对于循环队列而言,总长度是固定的(即数组的容量是固定的),任何位置都可以是队列的队首,利用队首索引可以利用如下公式推导出队尾索引:
tail_index = (head_index + count -1) % capacity
公式中的参数:
tail_index:队尾索引
head_index:队首索引
count:队列长度(即实际元素个数)
capacity:数组容量
循环队列小结
1. 队尾索引由队头索引公式得到
tail_index = (head_index + count -1) % capacity
以上是“LeetCode如何实现循环队列”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。