题目:找出人群中唯一的单身狗(一个数组中除了一个数字只出现一次,其它数字 //均出现偶数次,找出这个只出现一次的数据),要求:只扫描一次数据。
分析:通过“亦或”解决。注意两个公式:a^a=0, 0^a=a;
int get_single_dog(int* a, int n)
{
int ret = 0;
for (int i = 0; i < n; i++)
{
ret = ret ^ a[i];
}
return ret;
}
题目:找出人群中唯一的单身狗(一个数组中除了一个数字只出现一次,其它数字 //均出现偶数次,找出这个只出现一次的数据),要求:只扫描一次数据。
分析:通过“亦或”解决。注意两个公式:a^a=0, 0^a=a;
int get_single_dog(int* a, int n)
{
int ret = 0;
for (int i = 0; i < n; i++)
{
ret = ret ^ a[i];
}
return ret;
}