现在我们有这样一个数组,里面的 4 只有一个,这就是我们的“单身狗”,孤零零的嘛
思路1:
第一种方法就是让数组中元素依次去比较,直到比完所有数字如果还是没有找到相同的,那这个数就是单身狗。如果找到相同的数字,则让下一个元素依次去比较。代码思路可以参考:
思路2:
在刚拿到这个问题的时候,Mr.狠人最先想到的其实是将这个数组先变成有序数组,然后一对一对的比较
但这样写出来的代码,程序效率比思路1肯定要高,但还是不够高,运行时程序需要先将数组先排序。而且程序员写代码也不够简便,因为要判断很多条件。感兴趣的同学可以自行试一下。
思路3:异或运算
最后这种思路运用到异或操作符,是这题的最优解
所以我们只要将所有数字异或起来就能找到“单身狗”了,是不是非常简单,代码手到擒来了吧
图片演示只是为了清晰,乱序也能正确计算
int main()
{
int arr[7] = { 1,2,3,4,3,2,1 };
int i = 0;
int single_dog = 0;//建立一个变量接收“单身狗”
for (i = 0; i < 7; i++)
{
single_dog = single_dog ^ arr[i];
}
printf("%d", single_dog);
return 0;
}
好了题解完了,莫名伤心 4 不是single dog 而我才是