Нам дан список из n-1 целых чисел, и эти числа находятся в диапазоне от 1 до n. В списке нет дубликатов. Одно из целых чисел отсутствует в списке. Мы должны найти пропущенный номер. Это вопрос.
Мой подход состоит в том, чтобы взять XOR всех элементов из 1 ... N и всех элементов массива и затем вывести XOR. Это работает нормально, но я нашел еще одно решение в Geeks для Geeks, но я не могу понять, что и почему они делают.
Подход : Мы можем выбрать одно число из известных числа и вычесть одно число из заданных чисел
код :
#include <bits/stdc++.h>
using namespace std;
// a represents the array
// n : Number of elements in array a
int getMissingNo(int a[], int n)
{
int i, total=1;
for ( i = 2; i<= (n+1); i++)
{
total+=i;
total -= a[i-2];
}
return total;
}
//Driver Program
int main() {
int arr[] = {1, 2, 3, 5};
cout<<getMissingNo(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}