¿Qué estructura de datos sería mejor para encontrar el número de estudiantes dentro de un rango de altura dado de manera escalable?

Bien, analicemos esto, hay un millón de datos y estoy tomando la altura máxima en 8 pies (aunque eso no es posible). También 8 pies = 243.84 cm. Entonces, incluso tomando una precisión de 0.01, si creamos un tipo de mapeo desde la altura hasta la nula de niños con esa altura, todavía tendremos solo 24384 teclas (2.43 x 10 ^ 4), que pueden almacenarse fácilmente como índices de matriz y luego pueden ser operado por árboles de segmento para las consultas de rango.

Entonces, creamos una matriz con índices que denotan la altura en cm multiplicada por 100 y los valores en esos índices denotan el recuento de niños con esa altura. Luego creamos un árbol de segmentos a partir de él.

Creando árbol Seg: O (n)
Consulta de rango: O (log n)
Eliminar un alumno (Actualización): O (iniciar sesión n)

Para leer sobre los árboles de segmentos: https://www.hackerearth.com/note…

Usaría una tabla hash usando el encadenamiento, ya que usted mencionó que habrá eliminaciones frecuentes cuando el estudiante no se registre en la escuela porque si usamos el direccionamiento abierto, las eliminaciones pueden tomar mucho tiempo.

Ahora cada elemento de la tabla hash contiene un 1) un puntero a una lista vinculada que contiene información de los estudiantes con una altura particular 2) el número de elementos en la lista vinculada.

ahora, cuando queremos recuperar la información, aplicamos la función hash en el límite superior y el límite inferior y luego sumamos la información en índices que se encuentran dentro del rango.