只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1]
输出: 1
示例2:
输入: [4,1,2,1,2]
输出: 4
解法一:
1.将数组排序
2.循环数组找出只出现一次的数字
这种算法时间复杂度不为线性。
这种解法代码就不展示了。
解法二:
这是我们今天主要讲的解法。
通过位运算中的异或运算来解决。
异或:两个位相同时为0,相异时为1。
a^a=0;
0^a=a;
异或运算满足交换律,所以有:
a^b
^a=a
^a
^b=b;
代码如下:
int singleNumber(int* nums, int numsSize){
int i,result=0;
for(i=0;i<numsSize;i++)
{
result=result^nums[i];
}
return result;
}