Menu
CoddyTech

Find Median from Data Stream

СложноКучаpython iconjava iconcpp iconc iconjs icon+10

Спроектируй структуру с двумя операциями: addNum сохраняет целое число, а findMedian возвращает медиану всех чисел, сохранённых на данный момент. Медиана нечётного количества чисел — это среднее число; для чётного количества — среднее арифметическое двух средних чисел.

Операция i — это ops[i], при этом values[i] содержит число для addNum и 0 для findMedian. Выполни их по порядку для пустой структуры и верни по одной строке для каждой: "null" для addNum, медиану для findMedian. Записывай медиану в виде "3", "2.5" или "-0.5": без десятичной точки для целого числа, а ноль — как "0", никогда как "-0".

Функция

medianStreamOps(ops: string-array, values: integer-array) → string-array
opsstring-array
операции в порядке их выполнения
valuesinteger-array
число для каждого addNum, 0 для каждого findMedian
Возвращаетstring-array
один ответ на операцию в виде текста

Ограничения

  • 1 ≤ ops.length ≤ 3000
  • values.length == ops.length
  • Каждый ops[i] — это addNum или findMedian.
  • -105 ≤ values[i] ≤ 105 для addNum, а values[i] == 0 для findMedian.
  • findMedian вызывается только после того, как выполнен хотя бы один вызов addNum.

Примеры

Ввод
ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]values = [5, 0, 1, 0, 8, 0, 3, 0]
Вывод
["null", "5", "null", "3", "null", "5", "null", "4"]
Пояснение
Для 1 и 5 медиана равна (1 + 5) / 2 = 3. Для 1, 5 и 8 она равна 5, а для 1, 3, 5 и 8 — (3 + 5) / 2 = 4.
challenge icon

Дополнительный вопрос

Если бы каждое значение находилось в диапазоне от 0 до 100, как можно было бы сделать так, чтобы обе операции выполнялись за постоянное время?

Сбросить код
def medianStreamOps(ops, values):
    # Напишите код здесь

Тест #1

Тест #2

Аргументы

ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]
values = [5, 0, 1, 0, 8, 0, 3, 0]

Ожидаемый вывод

["null", "5", "null", "3", "null", "5", "null", "4"]