Encontrar elementos faltantes en una matriz

Dado que tiene una matriz A [1..n] de tamaño n, contiene elementos del conjunto {1..n}. Sin embargo, faltan dos de los elementos (y tal vez dos de los elementos de la matriz se repiten). Encuentra los elementos que faltan.

Eg si n = 5, A puede ser A [5] = {1,2,1,3,2}; y entonces los elementos que faltan son {4,5}

El enfoque que utilicé fue:

int flag[n] = {0};  
int i;  
for(i = 0; i < n; i++)  {  
  flag[A[i]-1] = 1;  
 }  

for(i = 0; i < n; i++)  {  
 if(!flag[i]) {  
    printf("missing: %d", (i+1));  
}  

la complejidad espacial llega a O (n). Siento que este es un código muy infantil e ineficiente. Entonces, ¿podría proporcionar un algo mejor con una mejor complejidad de espacio y tiempo.

Respuestas a la pregunta(9)

Su respuesta a la pregunta