對於佇列,我們可以使用動態陣列和指向佇列頭部的索引來實現,當佇列資料較多時,陣列的容量要求較大,一種比較好的改進方法使用陣列實現迴圈佇列。
我們來看一下leetcode給出的演示:
可以得出:
佇列滿時:(tail+1)%length == head length為長度
隊列為空:head==tail
迴圈佇列的方法:
**:
class mycircularqueue
/** insert an element into the circular queue. return true if the operation is successful. */
public boolean enqueue(int value) else
}/** delete an element from the circular queue. return true if the operation is successful. */
public boolean dequeue()
head = (head+1)%length;
return true;
}/** get the front item from the queue. */
public int front()
return arr[head];
}/** get the last item from the queue. */
public int rear()
return arr[(tail-1+length)%length];//
}/** checks whether the circular queue is empty or not. */
public boolean isempty()
/** checks whether the circular queue is full or not. */
public boolean isfull()
}
參考: leetcode 探索 佇列與棧 島嶼數量
給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 1...
leetcode 棧和佇列
20.有效的括號 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false ...
LeetCode棧和佇列
棧和佇列 棧是限定僅在表尾進行插入和刪除操作的後進先出 lifo 的線性表 佇列是只允許在表的一端進行插入,在另一端刪除元素的先進先出 fifo 的線性表 225.用佇列實現棧 使用佇列實現棧的下列操作 注意 思路 為了滿足棧的特性,即最 棧的元素最先出棧,在使用佇列實現棧時,應滿足佇列前端的元素是...