您的位置:首页 > 其它

找出数组中只出现一次的数字

2014-03-21 12:17 225 查看
数组中只有一个数出现一次,其他的数都出现2次,找出出现一次的数字,要求O(n),不使用辅助空间。

#include <stdio.h>

void PrintArry(int a[],int len)
{
int i = 0;
for (; i < len; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}

int fun(int a[],int len)
{
int result = a[0];
int i = 1;
for (; i < len;i++)
{
result ^= a[i];
}

return result;
}

int main()
{
int a[] = {1,2,4,1,7,5,4,2,7};
int b[] = {1,3,3,1,4,5,3,1,4,1,3};
int res = 0;
int len = sizeof(a)/sizeof(a[0]);
int len1 = sizeof(b)/sizeof(b[0]);
PrintArry(a,len);
res = fun(a,len);
prtinf("%d\n", res);
PrintArry(b,len1);
res = fun(b,len1);
prtinf("%d\n", res);
return 0;
}


其实只要其他数字出现的都是偶数次,这个方法都可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组
相关文章推荐