This commit is contained in:
roma-dxunvrs
2026-09-04 22:55:43 +03:00
parent f57762fd3b
commit 4fabe16272
45 changed files with 323 additions and 20 deletions
+1 -1
View File
@@ -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))