Menu
CoddyTech

Find Median from Data Stream

DifícilMontículopython iconjava iconcpp iconc iconjs icon+10

Diseña una estructura con dos operaciones: addNum almacena un entero y findMedian devuelve la mediana de todos los valores almacenados hasta el momento. La mediana de una cantidad impar es el valor del medio; para una cantidad par, es el promedio de los dos valores del medio.

La operación i es ops[i], donde values[i] contiene el número para addNum y 0 para findMedian. Ejecútalas en orden sobre una estructura vacía y devuelve una cadena por cada una: "null" para addNum, la mediana para findMedian. Escribe la mediana como "3", "2.5" o "-0.5": sin punto decimal para un número entero y el cero como "0", nunca "-0".

Función

medianStreamOps(ops: string-array, values: integer-array) → string-array
opsstring-array
las operaciones, en el orden en que se ejecutan
valuesinteger-array
el número para cada addNum, 0 para cada findMedian
Devuelvestring-array
una respuesta por operación, como texto

Restricciones

  • 1 ≤ ops.length ≤ 3000
  • values.length == ops.length
  • Todo ops[i] es addNum o findMedian.
  • -105 ≤ values[i] ≤ 105 para addNum, y values[i] == 0 para findMedian.
  • findMedian solo se llama después de al menos un addNum.

Ejemplos

Entrada
ops = ["addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian", "addNum", "findMedian"]values = [5, 0, 1, 0, 8, 0, 3, 0]
Salida
["null", "5", "null", "3", "null", "5", "null", "4"]
Explicación
Con 1 y 5, la mediana es (1 + 5) / 2 = 3. Con 1, 5 y 8 es 5, y con 1, 3, 5 y 8 es (3 + 5) / 2 = 4.
challenge icon

Para ir más allá

Si todos los valores estuvieran entre 0 y 100, ¿cómo podrías hacer que ambas operaciones se ejecutaran en tiempo constante?

Restablecer código
def medianStreamOps(ops, values):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumentos

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

Salida Esperada

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