Скользящая медиана потока чисел
Динамическое программирование
Экстремальная
В поток последовательно добавляются числа. Операции заданы списком ops, каждая - пара [код, значение]:
- код 0 - добавить значение в поток;
- код 1 - запрос текущей медианы (значение в паре игнорируется).
Верните список ответов на все запросы, но каждый ответ - УДВОЕННАЯ медиана (чтобы не иметь дела с дробями): если чисел нечётное количество, это медиана * 2, если чётное - сумма двух средних элементов.
Поддерживайте две кучи (максимальную для нижней половины, минимальную для верхней) так, чтобы и добавление, и запрос выполнялись за O(log n).
Сигнатура функции
sliding_median_queries(ops: list[list[int]]) -> list[int]
Примеры
| Вход | Ожидаемый результат |
| [[[0, 5], [1, 0], [0, 3], [1, 0], [0, 8], [1, 0]]] | [10, 8, 10] |
| [[[0, 1], [1, 0]]] | [2] |
1решили
1пытались
100%успешность
Войдите, чтобы решить →