Я реализую очередь MinMax Priority Queue на std :: multimap с возможностью иметь несколько значений на ключе, и у меня уже есть функции minKey и maxKey, написанные в O (1) временная сложность (с использованием begin() и end()).Реализация MinMax PriorityQueue с minValue и maxValue в O (1)
Теперь у меня есть проблема с реализацией minValue и maxValue. Одним из очевидных решений было бы создание структуры данных (например, с помощью std :: set) с помощью только значений этого pqueue и доступа к min и max в O (1).
Очевидно, что недостатком этого решения будет дублированный объем памяти, который я, конечно, не хочу.
Я думаю о решении с указателями на minValue и maxValue соответственно. Вставка в PQ будет простой, просто сравните с этими указателями ... теперь, что насчет удаления?
Вставка: Я могу иметь несколько значений на определенном ключевом
Удаление: Стирает любое значение из определенного ключа (если ключ не существует, генерируется исключение).
Есть ли у вас какие-либо предложения о том, как реализовать minValue и maxValue в O (1) сложности времени?
Заранее спасибо
C не имеет 'std :: multimap' или' std :: set'. Тег кажется несущественным для вашего вопроса. Почему вы его добавили? – user2079303
Итак, функция 'minValue' должна возвращать наименьшее значение на карте, а не значение в самом маленьком ключе? – user2079303
У C++ уже есть 'priority_queue' в STL. Какую дополнительную функциональность вы хотите от этого? –