前往
大廳
主題

LeetCode - 641. Design Circular Deque 解題心得

Not In My Back Yard | 2021-05-23 00:00:04 | 巴幣 0 | 人氣 247

題目連結:


題目意譯:
設計你自己的環形雙端佇列(Deque)之實作。

你的實作應支援以下操作:
MyCircularDeque(k): 建構子,設定 deque 的大小為 k。
insertFront(): 添加一個元素到 deque 的前端。回傳真,如果操作成功的話。
insertLast(): 添加一個元素到 deque 的尾端。回傳真,如果操作成功的話。
deleteFront(): 刪除 deque 前端的元素。回傳真,如果操作成功的話。
deleteLast(): 刪除 deque 尾端的元素。回傳真,如果操作成功的話。
getFront(): 取得 deque 前端的元素。如果 deque 為空,則回傳 -1。
getRear(): 取得 deque 尾端的元素。如果 deque 為空,則回傳 -1。
isEmpty(): 檢查 deque 是否為空。
isFull(): 檢查 deque 是否滿了。

注:
所有值將介於範圍 [0, 1000] 中。
操作數將介於範圍 [1, 1000] 中。
請勿使用內建的 Deque 函式庫。



範例測資:
MyCircularDeque circularDeque = new MycircularDeque(3); // 設定大小為 3
circularDeque.insertLast(1);// 回傳真
circularDeque.insertLast(2);// 回傳真
circularDeque.insertFront(3);// 回傳真
circularDeque.insertFront(4);// 回傳假,佇列已滿
circularDeque.getRear();  // 回傳 2
circularDeque.isFull();// 回傳真
circularDeque.deleteLast();// 回傳真
circularDeque.insertFront(4);// 回傳真
circularDeque.getFront();// 回傳 4


解題思維:
可以視為這題的延伸。不過該題的 Front() 、 Rear() 、 enQueue() 和 deQueue() 依序對應到本題的 getFront() 、 getRear() 、 insertLast() 以及 deleteFront()。

而 insertFront() 和 deleteLast() 可以仿照 insertLast() 跟 deleteFront() 的作法。至於其他的函式基本就是一樣。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作