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?