Cómo diseñar una estructura de datos que pueda almacenar 1-1000 números

Puede lograr esto simplemente manteniendo una matriz de la magnitud máxima del número que se puede dar como entrada.
De la pregunta parece que la magnitud máxima de su entrada es 1000.
así que declara una matriz de tamaño 1000.

// matriz [1000]

Inicialice cada posición de esta matriz a 0.
para cada i, array [i] significa el número de veces que se ha insertado el número i como datos.

Insertar operación
suponga que la entrada se almacena en la variable k.
k = entrada ().
aumentar la posición k de la matriz en 1.
// matriz [k] ++.

operación de búsqueda
si el elemento a buscar se almacena en k. Pruebe el valor en la posición k de la matriz. Si el valor es positivo, el elemento está presente, de lo contrario no está presente.

Eliminar operación
si el elemento a eliminar se almacena en la variable k. Disminuya el valor en la posición k de la matriz.
// matriz [k] -.

La respuesta más apropiada que se me ocurre es Hashing with Chaining.
Operación de búsqueda: – O (1) (Hash el valor)
Insertar / Eliminar: -O (1)
Aunque las complejidades que he mencionado son complejidades promedio, el peor de los casos es O (n), que no debería ser un problema con la selección adecuada de funciones hash que no tienen colisiones insignificantes o insignificantes.

More Interesting

¿Por qué necesito el complemento de un gráfico?

¿Alguien podría escribir un programa en C para mostrar un árbol de búsqueda binario en forma gráfica y explicarlo?

¿Cuáles son los mejores recursos para aprender R? Tratando de construir mi propio algoritmo de predicción basado en datos anteriores que tengo en archivos csv y que solía ser un desarrollador de Ruby hace un par de años

Cómo resolver el problema 'Eliminar la cadena' (PSTRING) en SPOJ

¿Cuál es la mejor manera de realizar operaciones de intercambio K en un entero de N dígitos para obtener el máximo número posible?

Cómo implementar un código C para la eliminación de un nodo de una lista vinculada considerando todos los casos de prueba

¿Cuáles son algunas explicaciones intuitivas / sencillas de los algoritmos estándar?

¿Cuáles son algunos algoritmos conocidos para encontrar una coincidencia perfecta en un gráfico bipartito?

¿Cómo puedo encontrar una incrustación plana de un gráfico plano?

Cómo contar el número de enteros palindrómicos dentro de un rango [A, B] donde A y B pueden ser de hasta 10 ^ 17

¿Qué es el algoritmo k-Means y cómo funciona?

¿Cuáles son las mejores prácticas para implementar la paginación en un sitio web con una gran cantidad de datos?

¿Cuándo puede el paralelismo hacer que sus algoritmos se ejecuten más rápido? ¿Cuándo podría hacer que sus algoritmos funcionen más lentamente?

Mientras codifica problemas algorítmicos durante una entrevista usando C, ¿está bien asumir funciones de biblioteca?

¿Qué es mejor: una lista enlazada de codificación o el uso de libs de plantillas estándar?