Medium

Quiz

#641 Design Circular Deque

APPROACH

Design a fixed-capacity circular double-ended queue. Implement the MyCircularDeque class with: MyCircularDeque(k) to set capacity k; insertFront(value) and insertLast(value) to add elements at either end (return true on success); deleteFront() and deleteLast() to remove from either end (return true on success); getFront() and getRear() to peek at each end (return -1 when empty); and isEmpty() / isFull() status checks.

Example 1:

Input
["MyCircularDeque", "insertLast", "insertLast", "insertFront", "insertFront", "getRear", "isFull", "deleteLast", "insertFront", "getFront"]
[[3], [1], [2], [3], [4], [], [], [], [4], []]
Output
[null, true, true, true, false, 2, true, true, true, 4]

Example 2:

Explanation
MyCircularDeque myCircularDeque = new MyCircularDeque(3);
myCircularDeque.insertLast(1); // return True
myCircularDeque.insertLast(2); // return True
myCircularDeque.insertFront(3); // return True
myCircularDeque.insertFront(4); // return False, the queue is full.
myCircularDeque.getRear(); // return 2
myCircularDeque.isFull(); // return True
myCircularDeque.deleteLast(); // return True
myCircularDeque.insertFront(4); // return True
myCircularDeque.getFront(); // return 4
1 of 4
1:00

What is the optimal approach for this problem?