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

来源:互联网 发布:图片做视频的软件 编辑:程序博客网 时间:2024/05/17 01:45

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

分析:利用异或运算的特殊性。例如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;}
0 0