Design a queue that supports push and pop operations at the front, middle, and back. Pattern focus: Circular Queue (Ring Buffer). Maintain a balanced split of the data so all operations stay efficient.
operations = list of queue commands with optional values
results returned by pop operations
Example 1:
Input:
operations = [["FrontMiddleBackQueue"],["pushFront","1"],["pushBack","2"],["pushMiddle","3"],["pushMiddle","4"],["popFront"],["popMiddle"],["popMiddle"],["popBack"],["popFront"]]
Output:
[null,null,null,null,null,1,3,4,2,-1]
Explanation:
Front-Middle-Back Queue operations
Example 2:
Input:
operations = [["FrontMiddleBackQueue"],["pushBack","1"],["pushBack","2"],["popMiddle"],["popFront"]]
Output:
[null,null,null,1,2]
Explanation:
Simple push/pop operations