您的位置:首页 > 其它

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

2017-11-09 17:56 791 查看
题目要求要用位运算,而且要找到不是单独出现的数据。此时我们可以想到异或的特性,一个数据异或上自己时的到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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐