Design a circular queue (ring buffer) — a linear data structure where the last element connects back to the first, forming a circle.
Implement a function that processes an array of operations and an array of arguments:
"MyCircularQueue" — Initializes the queue with a capacity of k."enQueue" — Inserts value into the circular queue. Returns true if successful, false if the queue is full."deQueue" — Deletes an element from the front. Returns true if successful, false if the queue is empty."Front" — Returns the front element, or -1 if empty."Rear" — Returns the last element, or -1 if empty."isEmpty" — Returns true if the queue is empty."isFull" — Returns true if the queue is full.Example 1:
Input: operations = ["MyCircularQueue","enQueue","enQueue","enQueue","enQueue","Rear","isFull","deQueue","enQueue","Rear"], args = [[3],[1],[2],[3],[4],[],[],[],[4],[]]
Output: [null,true,true,true,false,3,true,true,true,4]
Explanation: Queue capacity is 3. After enqueueing 1, 2, 3 the queue is full. enQueue(4) fails. Rear is 3. deQueue removes 1. enQueue(4) succeeds. Rear is now 4.
Example 2:
Input: operations = ["MyCircularQueue","enQueue","deQueue","isEmpty","enQueue","Front","Rear"], args = [[2],[5],[],[],[10],[],[]]
Output: [null,true,true,true,true,10,10]
Explanation: Enqueue 5, dequeue it (queue empty). Enqueue 10, Front and Rear both return 10.
1 <= k <= 10000 <= value <= 10003000 calls will be made to the operations