给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。(C语言)

int Cmp(const void* x, const void* y)
{
	return *(int*)x - *(int*)y;
}
int singleNumber(int* nums, int numsSize)
{
	if (numsSize == 1)
	{
		return nums[0];
	}
	qsort(nums, numsSize, sizeof(int), Cmp);//快排
	int tmp = 0;
	int i = 0;
	while (1)//依次相加减,剩下的就是多余的数字
	{
		tmp += nums[i];
		i++;
		if (i == numsSize)
		{
			break;
		}
		tmp -= nums[i];
		i++;
	}
	return tmp;
}

int main()
{
	int arr[5] = { 4,1,2,1,2 };
	printf("%d",singleNumber(arr,5));
	return 0;
}

版权声明:本文为kb1122333原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。