您好,登錄后才能下訂單哦!
小編給大家分享一下LeetCode如何實現(xiàn)循環(huán)隊列,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
隊列是典型的先進(jìn)先出(FIFO)結(jié)構(gòu),插入(insert)也叫做入隊(enqueue),新元素從隊尾插入。刪除(delete)也叫做出隊(dequeue),從隊首移除
隊列
隊列可以利用Python中的數(shù)組實現(xiàn),包含如下函數(shù):
enqueue:入隊
dequeue:出隊
isEmpty:判斷是否為空
size:隊列長度(元素個數(shù))
循環(huán)隊列
循環(huán)隊列也是一種線性結(jié)構(gòu),同樣基于FIFO原則,只不過隊尾被連接在了隊首之后形成了一個循環(huán),也被稱之為“環(huán)形緩沖器”
循環(huán)隊列的一個優(yōu)點在于:可以利用這個隊列之前用過的空間
循環(huán)隊列是要設(shè)置總長度容量的
循環(huán)隊列包含的函數(shù):
MyCircularQueue(k):構(gòu)造一個長度為k的循環(huán)隊列
Front:獲取隊首元素
Rear:獲取隊尾元素
enqueue(value):向循環(huán)隊列插入一個元素,若成功則返回True
dequeue():從循環(huán)隊列中刪除一個元素,成功則返回True
isFull():檢查循環(huán)隊列是否為已滿
isEmpty():判斷循環(huán)隊列是否為空
示例:
實現(xiàn)思路
首先循環(huán)隊列是個“環(huán)”,利用python的數(shù)組模擬,通過操作數(shù)組的索引構(gòu)建一個虛擬的環(huán)。對于循環(huán)隊列而言,總長度是固定的(即數(shù)組的容量是固定的),任何位置都可以是隊列的隊首,利用隊首索引可以利用如下公式推導(dǎo)出隊尾索引:
tail_index = (head_index + count -1) % capacity
公式中的參數(shù):
tail_index:隊尾索引
head_index:隊首索引
count:隊列長度(即實際元素個數(shù))
capacity:數(shù)組容量
循環(huán)隊列小結(jié)
1. 隊尾索引由隊頭索引公式得到
tail_index = (head_index + count -1) % capacity
以上是“LeetCode如何實現(xiàn)循環(huán)隊列”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。