leetcode-消失的数字-1

消失的数字

题目要求
  数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
思路
  因为数组内元素是0-n的数字,这个与下标刚好是一样的,就可以利用a ^ a = 0和0 ^ a = a这两个公式进行编程,缺少的那个数字只出现了一次,其余数字出现两次。
代码实现

#include <stdio.h>

int FindNum(int str[],int len)
{
	int s = 0;

	for (int i = 0; i < len; i++)
	{
		s ^= i;
		s ^= str[i];
	}
	s ^= len;
	return s;
}

int main()
{
	int str[] = { 1, 9, 8, 7, 6, 4, 3, 2, 10 , 0};
	printf("%d", FindNum(&str, sizeof(str) / sizeof(int)));
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/113093429