您的位置:首页 > 编程语言

.一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现。

2017-05-05 19:10 676 查看
void Find_data(int *arr,int len, int *data1, int *data2)
{
assert(arr);
unsigned int  ret = 0;
for (int i = 0; i <len; i++)
{
ret ^= arr[i];
}
int tmp1 = 1;
int tmp2 = 1;
int count = 0;
while (1)
{
if ((ret&tmp1) != 0)
{
break;
}
tmp1 <<= 1;

}
*data1 = *data2 = 0;
for (int i = 0; i < len; i++)
{
if (arr[i] & tmp1)
{
*data1 ^= arr[i];
}
else
{
*data2 ^= arr[i];
}
}
}
int main()
{
int arr[] = { 1, 1, 3, 3, 4, 4, 5, 5, 6, 6, 24, 19, 19, 36, 7, 7 };
int len = sizeof(arr) / sizeof(arr[0]);
int data1, data2;
Find_data(arr,len,&data1, &data2);
printf("diff data : %d, %d\n", data1, data2);
system("pause");
return 0;
}



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