1.一个数组中只有两个数字是出现一次,
其他所有数字都出现了两次。
找出这两个只出现一次的数字,编程实现。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int CSing(int *arr, int len)
{
int i = 0;
int k = arr[0];
while (i < len - 1)
{
k = k ^ *(arr + i + 1);
i++;
}
return k;
}
void Part(int *arr, int m,int len)
{
int i = 0;
int k = 0;
int pos = 0;
int x = 0;
int y = 0;
for (i = 0; i < 32; i++)
{
if (1 == ((m >> i) & 1))
{
pos = i;
break;
}
}
for (i = 0; i < len; i++)
{
if (1 == ((*(arr + i) >> pos) & 1))
{
x ^= *(arr + i);
}
else
{
y ^= *(arr + i);
}
}
printf("x = %d,y = %d\n", x, y);
}