写了两种方法满足O(n) 用的C
// 求和法 n有溢出风险
int missingNumber(int *nums, int numsSize)
{
long long sum = ((numsSize + 1) * numsSize) / 2;
long long realSum = 0;
for (int i = 0; i < numsSize; i++)
{
realSum += nums[i];
}
return sum - realSum;
}
// 异或配对法
// 相同的数异或运算后为0 异或运算满足交换律 0^另一个数=另一个数本身
int missingNumber(int *nums, int numsSize)
{
int x = 0;
for (int i = 0; i <= numsSize; i++)
{
x ^= i;
}
for (int j = 0; j < numsSize; j++)
{
x ^= nums[j];
}
return x;
}