Utilice un hash table en el que inserte cada elemento. Antes de insertar un elemento, verifique si ya está allí. Si es así, tienes un duplicado. Esto es O(n)
en promedio, pero el peor caso es tan malo como su método actual.
O bien, puede usar un set para hacer lo mismo en el peor caso de O(n log n)
. Esto es tan bueno como la solución de clasificación, excepto que no cambia el orden de los elementos (aunque usa más memoria desde que creaste un conjunto).
Otra forma es copiar su vector a otro vector, ordenarlo y verificar los elementos adyacentes allí. No estoy seguro de si esto es más rápido que la solución establecida, pero creo que ordenar agrega menos sobrecarga que los árboles de búsqueda equilibrada que usa un conjunto, por lo que debería ser más rápido en la práctica.
Por supuesto, si no te importa mantener el orden original de los elementos, simplemente ordena el vector inicial.
duplicado de [Determinación de si un vector no ordenada tiene todos los elementos únicos] (http://stackoverflow.com/questions/2769174/determining-if-an-unordered-vectort-has-all-unique-elements) –
Can usted modifica el vector? Si no, ¿tiene memoria para asignar una copia? – florin