пропущенные номера - PullRequest
0 голосов
/ 25 мая 2011

Дан массив размером n.Он содержит числа в диапазоне от 1 до n.Каждый номер присутствует как минимум один раз, за ​​исключением 2 номеров.Найдите пропущенные числа.например.Предполагается, что массив элементов размера 5 равен 3,1,4,4,3

. Один подход -

static int k;
for(i=1;i<=n;i++)
{
  for(j=0;j<n;j++)
  {
    if(i==a[j])
      break;
   }
    if(j==n)
    {
      k++;
      printf("missing element is", a[j]);
    }

  if(k==2)
    break;}

. Другое решение может быть .. для (i = 0; i

Ответы [ 12 ]

0 голосов
/ 25 мая 2011

Если вы можете свободно выбирать язык, используйте наборы Python.

numbers = [3,1,4,4,3]
print set (range (1 , len (numbers) + 1) ) - set (numbers)

Выводит

set([2, 5])
0 голосов
/ 25 мая 2011

Неясно, почему наивный подход (вы можете использовать битовое поле или массив) для маркировки предметов, которые вы видели, не просто хорош.O (2n) CPU, O (n / 8) память.

...