Если вас не интересует O (n) в операции push:
Мой личный подход заключается в том, чтобы сохранить связанный список отсортированных элементов.Всякий раз, когда вы добавляете элемент, сравнивайте его с самым высоким элементом в отсортированном списке.Если это то же самое, удалите самый высокий элемент из списка, в дополнение к появлению элемента.Если это не так, просто извлеките элемент.
Таким образом, у вас всегда должен быть самый высокий элемент в последнем элементе связанного списка, и время выталкивания составляет O (1).1006 * Если вам также нужен O (1) для толкания, тогда мне придется пройти.