Я хотел бы реализовать двустороннюю очередь приоритетов со следующими ограничениями:
должен быть реализован в массиве фиксированного размера.. скажем, 100 элементов.. если новые элементы необходимо добавить после того, как массив заполнен, самые старые необходимо удалить
нужен максимум и минимум в O (1)
если возможно вставить в O(1)
если возможно, удалите минимум в O (1)
очистить до пустого/начального состояния в O(1), если возможно
количество элементов в массиве на данный момент за O(1)
Я хотел бы O (1) для всех вышеперечисленных 5 операций, но невозможно иметь O (1) для всех из них в одной и той же реализации. По крайней мере, O(1) для 3 операций и O(log(n)) для других 2 операций должно быть достаточно.
Буду признателен, если какие-либо указатели могут быть предоставлены для такой реализации.