Encontrando elementos ausentes em uma matriz

Desde que você tenha uma matriz A [1..n] de tamanho n, ela contém elementos do conjunto {1..n}. No entanto, dois dos elementos estão ausentes (e talvez dois dos elementos da matriz sejam repetidos). Encontre os elementos ausentes.

Eg se n = 5, A pode ser A [5] = {1,2,1,3,2}; e assim os elementos ausentes são {4,5}

A abordagem que usei foi:

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));  
}  

a complexidade do espaço é O (n). Eu sinto que este é um código muito infantil e ineficiente. Então, você poderia fornecer um algo melhor com melhor complexidade de espaço e tempo.

questionAnswers(9)

yourAnswerToTheQuestion