只出现一次的数字
给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。
备注:
你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?
---------------------------------------------------------------------------
思路:
1.直接解法 先进行排序,然后使用双指针遍历。时间复杂度不符合。
---------------------------------------------------------------------------
2.使用异或操作。
这个程序用了个小技巧:一个整数和它本身异或之后得到值是0,0与其他整数异或得到的是这个整数本身。
int singleNumber(int* nums, int numsSize) {
int ret=0;
int i;
if(numsSize<1)
{
return 0;
}
for(i=0;i<numsSize;i++)
{
ret ^= nums[i];
}
return ret;
}