Этот код работает для серии чисел от 0 до N.

вая, что у вас есть массив A [1..n] размера n, он содержит элементы из набора {1..n}. Однако два элемента отсутствуют (и, возможно, два элемента массива повторяются). Найдите недостающие элементы.

Например, если n = 5, A может быть A [5] = {1,2,1,3,2}; и поэтому недостающие элементы {4,5}

Подход, который я использовал, был:

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

сложность пространства сводится к O (n). Я чувствую, что это очень детский и неэффективный код. Поэтому не могли бы вы предоставить лучший алгоритм с большей сложностью пространства и времени.

Ответы на вопрос(6)

Ваш ответ на вопрос