题目描述:
有一个数组,里面的元素只有一个只出现了一次,剩下的都是成对出现,请找出这个数。
代码展示:
class Function
{
public:
int FindOne(int* arr, int len)
{
int tmp = -1;
if (arr == NULL || len == 0)
{
cout << "error!" << endl;
}
else
{
tmp = arr[0];
for (int i = 1; i < len; i++)
{
tmp ^= arr[i];
}
}
return tmp;
}
};
拓展:
假设这个数有两个数出现了一次,找出这两个数
代码演示:
void FindTwo(int* arr, int len)
{
if (arr == NULL || len == 0)
{
cout << "error!" << endl;
return ;
}
int tmp = FindOne(arr, len);
int i = 1;
while ((i&tmp) == 0)
{
i <<= 1;
}
int swap = arr[0]; int right = len - 1; int left = 0;
while( right != left)
{
while (