您的位置:首页 > 编程语言 > C语言/C++

查找数组中只出现一次的元素

2015-09-27 01:14 447 查看
问题:已知一个特殊数组,数组中除去一个元素只出现一次之外,其他元素都出现了两次,现在要找出这个唯一一个只出现了一次的数据元素,并将其打印出来。

分析:利用异或运算的特殊性。例如A异或B得到C,C再与B异或则又会得到A,那么依照这个规律,将整个数组逐个元素异或,最后得到的结果既是该数组中仅出现了一次的元素。

以已知data[]数组为例:

#include <iostream>

using namespace std;

int data[20] = {1, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 8};

int FindNumber(int data[],int length)
{
if(length <2)
return -1;
int opXor = 0, i = 0;
while(i <length)
opXor ^= data[i++];

return opXor;
}

int main()
{
int result = FindNumber(data, 20);
cout << result;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 数组