问:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。在O(n)时间内完成。
使用位操作符 ^ 来解决此问题
每一位都进行异或相同为0不同为1
一个数异或同一个数两次,结果还是那个数。
题解思路:用x=0先与0到n个数进行异或然后在与数组nums里的数进行异或最后得出缺失的整数。
int missingNumber(int* nums, int numsSize)
{
int x=0;
int i=0;
for(i=0;i<numsSize;i++)
{
x^=i;
}
for(i=0;i<numsSize;i++)
{
x^nums[i];
}
return x;
}
以上为leetcode消失的数字的题解。
欢迎大家评论留言,点赞支持和指正,感谢老铁看到这里。