代码实现
#include<stdio.h>
int main()
{
int flag = 0;
int arr[] = { 2,3,4,5,6,7,21,8,8,7,6,5,4,3,2 };
for (int i = 0; i <= sizeof(arr) / sizeof(arr[0]) - 1; i++)
{
for (int j = 0; j <= sizeof(arr) / sizeof(arr[0]) - 1; j++)
{
if (i == j)
{
j++;
}
if (0 == (arr[i] ^ arr[j]))
{
flag = 1;
break;
}
}
if (0 == flag)
{
printf("Singal:%d", arr[i]);
return 0;
}
flag = 0;
}
return 0;
}
优化:
主要思想:一个数连续异或两个相同的数相当于没有进行操作
#include<stdio.h>
int main()
{
int flag = 0;
int arr[] = { 2,3,4,5,6,7,21,8,8,7,6,5,4,3,2 };
for (int i = 0; i <= sizeof(arr) / sizeof(arr[0])-1; i++)
{
flag ^= arr[i];
}
printf("%d", flag);
return 0;
}