You need to design a data structure which support below operation in O(1) time complexity
1) Insert() which adds an element to the data structure
2) remove() which removes an element from the data structure
3) findMiddle() which will return middle element
4) deleteMiddle() which will delete the middle element.
Example:
Insert(1) --- O(1) time complexity
Insert(2)
Insert(3)
findMiddle() – 2 in O(1) time complexity
Insert(4)
Insert(5)
deleteMiddle() - remove 3 in O(1) time complexity
remove(5) – in O(1) time complexity
Problem level: Medium