Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Mediana de una Lista

Encuentra el valor central de una lista después de ordenarla.

Lo que aprenderás

  • Ordenar una lista y encontrar su centro
  • Manejar longitudes pares e impares
  • Promediar los dos valores centrales

Problema

Ver original (inglés)

Ordena los valores en orden ascendente. Si la cantidad de valores es impar, toma el valor central. Si es par, toma la media aritmética de los dos valores centrales. Este desafío solo acepta listas no vacías.

Implementa median_number(numbers).

Entrada

numbers: La lista no vacía de valores.

Salida

Devuelve la mediana como un número; puede terminar en .5.

Restricciones

1 ≤ longitud de la lista ≤ 100,000. Cada valor es un entero entre −1,000,000,000 y 1,000,000,000.

Ejemplos

Ejemplo 1
Entrada:
numbers = [2, 8, 4, 10]

Salida esperada:
expected = 6.0
Entrada:
std::vector<long long> numbers = {2, 8, 4, 10};

Salida esperada:
double expected = 6.0;
Entrada:
long[] numbers = new long[] {2, 8, 4, 10};

Salida esperada:
double expected = 6.0;

Explicación

El orden ascendente es 2, 4, 8, 10. El par central promedia (4 + 8) / 2 = 6.

Ejemplo 2
Entrada:
numbers = [9, 1, 4]

Salida esperada:
expected = 4.0
Entrada:
std::vector<long long> numbers = {9, 1, 4};

Salida esperada:
double expected = 4.0;
Entrada:
long[] numbers = new long[] {9, 1, 4};

Salida esperada:
double expected = 4.0;

Explicación

El orden ascendente es 1, 4, 9, cuyo valor central es 4.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

La mediana depende del orden ordenado, así que importan las posiciones en la lista ordenada.

Pista 2

Después de ordenar, usa el elemento central para longitudes impares, o combina los dos elementos centrales para longitudes pares.

Pista 3

Ten cuidado al preservar las mitades al promediar los dos valores centrales, porque la respuesta puede terminar en .5.

Complejidad esperada

tiempo O(n log n), espacio extra O(n)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.