【思想】两个相同的数异或的结果为0;一个不为0的数和0异或的结果为这个数本身。所以,当一个整型数组中出了一个元素只出现一次外,其他元素都出现了两次时,把每个元素遍历异或一遍最终得到结果即为只出现一次的元素。
【参考代码】
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int find_num(int arr[], int size)
{
int i = 0;
int ret = 0;
for (i = 0; i < size; i++)
{
ret ^= arr[i];
}
return ret;
}
int main()
{
int arr[] = { 1, 2, 3, 1, 2, 3, 4 };
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", find_num(arr, sz));
system("pause");
return 0;
}