标签:
Given an array of numbers nums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
For example:
Given nums = [1, 2, 1, 3, 2, 5]
, return [3, 5]
.
Note:
[5, 3]
is also correct.Code:
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* singleNumber(int* nums, int numsSize, int* returnSize) {
int num = 0;
int i;
int *tmp = (int*)malloc(2*sizeof(int));
for(i = 0;i<numsSize;i++)
num ^= nums[i];
int lowBit = 1;
while(!(lowBit&num))
{
lowBit<<=1;
}
tmp[0] = 0;
tmp[1] = 0;
for(i = 0;i<numsSize;i++)
{
if((nums[i]&lowBit) != 0)
{
tmp[0] ^= nums[i];
}
else
{
tmp[1] ^= nums[i];
}
}
*returnSize = 2;
return tmp;
}
标签:
原文地址:http://www.cnblogs.com/Alex0111/p/5378003.html