/*
*copyright@nciaebupt 转载请保留此信息
*一个数组中有n个元素,其中只有一个只出现一次,其他恰好都出现两次,
*怎样找出那个维一出现一次的元素。
*要求的复杂度:时间:O(n),空间:O(1)
*将数组中的数字进行异或运算,两个数进行异或,相同为0,不同为1,则出现两次的数全部抵消了。
*扫描一遍数组复杂度为o(n),另外存储异或的中间结果,复杂度为o(1)。
*/
#include <cstdio>
int main(int args,char ** argv)
{
int num[] = {3,2,8,2,3,5,9,5,9};
int res = 0;
for(int i = 0;i < sizeof(num)/sizeof(int);++i)
{
res = res ^ num[i];
}
printf("%d\n",res);
getchar();
return 0;
}
找出一个数组中只出现过一次的元素
最新推荐文章于 2020-12-19 00:40:53 发布