您好,登錄后才能下訂單哦!
小編給大家分享一下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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。