异或:相同为0,不同为1
与0异或不变,与1异或翻转
与自身异或为0,与自身的反异或为全1
题目描述:有一个数组,里面的元素只有一个是奇数个,其他的均为偶数个,要求找出这个元素。
个人解法:(一般解法)
#include <stdio.h>
#include <stdlib.h>
#define N 100
int cmp(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
int main(void)
{
int a[] = {1,2,3,3,5,6,7,5,7,6,2,1,5};
int len = sizeof(a)/sizeof(a[0]);
// printf("%d\n",len);
qsort(a,len,sizeof(a[0]),cmp);
int i,j,count = 0;
for(i = 0; i < len; i++)
{
for(j = 0; j < len; j++)
{
if(a[i] == a[j])
{
count++;
}
}
if(count % 2 !=0)
{
printf("%d\n",a[i]);
break;
}
}
return 0;
}