04.09
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
Leetcode #716 | #Hard | [[Стек]] | [[Связный список]] | [[Хэш-таблицы]] | [[Деревья]] | [[Куча]]
|
||||
Leetcode #716 | #Hard | [[Стек]] | [[Связный список]] | [[Хэш-таблицы]] | [[Деревья]] | [[Куча]] | [[Design]]
|
||||
## Идея
|
||||
Вариант 1. Два стека, один накапливает значения, другой для максимумов каждого состояния. При popMax() снимаем со второго стека, создаем буфер, берем значения из первого и ложим в буфер, когда дошли до максимума удаляем его а из буфера все возвращаем. Все операции кроме popMax() за O(1), popMax() - O(n)
|
||||
Вариант 2. Связный список + TreeMap (красно-черное дерево, там удалить/добавить элемент в любое место log(n) и узнать максимум тоже). Заводим свои Node, в TreeMap храним ключ - лист нод, при добавлении одинаковых элементов цепляем просто к листу, максимум отдает treemap. Все операции за O(log(n))
|
||||
|
||||
Reference in New Issue
Block a user