原题
You are given a sorted array consisting of only integers where every element appears exactly twice, except for one element which appears exactly once. Find this single element that appears only once.
Example 1:
Input: [1,1,2,3,3,4,4,8,8]
Output: 2
2是单个元素,所以输出为2。
Example 2:
Input: [3,3,7,7,10,11,11]
Output: 10
10是单个元素,所以输出为10。
Note: Your solution should run in O(log n) time and O(1) space.
----------------------------------------代码如下----------------------------------------
C语言题解
int singleNonDuplicate(int* nums, int numsSize){
if(nums==NULL || numsSize==0){//若数组数量为1,则直接返回0;
return 0;
};
if(numsSize==1){//若数组数量为1,则直接返回数组第一位;
return nums[0];
};
int i = 0;
int num = 0;
for(loop = 0; i < numsSize;i++)//遍历所有元素;
num^=nums[i];//异或运算。等同于num=num^nums[i]; 1100^1001==0101;
//两个相同数字异或,相应的位都会被异或为0;
//所以不管多少数字,只要是成对存在,那结果都为0;
//所以循环结束后,num=num1^0;num1为单个的元素;例如
return num;
}