К задачам

FastStatistics: min, max и среднее за O(1)

ЛегкаяАлгоритмы
Лучше работает на десктопе
Потоковая обработкаАгрегатыO(1)

Реализуйте небольшой помощник для потоковой статистики.

На собеседовании обсуждался класс с методами insert(int), get_min(), get_max() и get_avg(), где все операции должны работать как можно быстрее. В тренажёре то же поведение упаковано в функцию, чтобы тесты были детерминированными.

Для каждой операции:

  • ["insert", x] добавляет целое число x;
  • ["min"], ["max"], ["avg"] запрашивают текущее состояние;
  • если ещё не было добавленных значений, для запроса верните None.

Верните список результатов запросов в исходном порядке.

Signature

def fast_statistics(operations: list[list]) -> list[float | int | None]:

Примеры

Пример 1

Вход:
operations = [["min"],["insert",5],["insert",2],["max"],["min"],["avg"],["insert",9],["avg"]]
Выход:[null,5,2,3.5,5.333333333333333]

Запросы до и после вставок

Пример 2

Вход:
operations = [["insert",-3],["insert",-7],["insert",10],["min"],["max"],["avg"]]
Выход:[-7,10,0]

Отрицательные и положительные значения

Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
05:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
FastStatistics: min, max и среднее за O(1) — Алгоритмы задача — ML Mentor