题目意思为找出数组中唯一一个出现1次的元素,且该数组中其他元素均出现2次。
此处需要运用异或的性质,巧妙地进行解题:
异或性质:
a ^ 0 = a
a ^ a = 0
a ^ b ^ c = a ^ c ^ b
所以可以推出:a ^ b ^ a = a ^ a ^ b = 0 ^ b = b
所以对数组中所有的元素进行异或处理,出现偶数次的元素会被消去,结合题意,可知最后得到的结果为唯一一个出现1次的元素
附上关键代码:
elem = 0;
for(int i=0; i<n; i++)
{
elem = elem ^ array[i];
}
return elem;