题目要求要用位运算,而且要找到不是单独出现的数据。此时我们可以想到异或的特性,一个数据异或上自己时的到0。所以所有成对的数据异或玩之后得到0,0再异或上单独的值(单身狗)就得到它本身。
下面是代码实现:
int main()
{
int arr[] = { 1, 2, 3, 4, 1, 2, 3, 4, 5 };
int z = sizeof(arr) / sizeof(arr[0]);
int j = 0;
for (; j < z; j++)
{
printf("%d ", arr[j]);
}
printf("\n");
int res = arr[0];
int i = 1;
for (; i < z;i++)
{
res ^= arr[i];
}
printf("the single dog is: %d\n",res);
return 0;
}