1.消失的数字
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
思路1:求和相减
#include <stdio.h>
int missingNumber(int* nums, int numsSize) {
int i = 0;
int sum = 0;
for (i = 0; i <= numsSize; i++)
{
sum += i;
}
for (i = 0; i < numsSize; i++)
{
sum -= nums[i];
}
return sum;
}
int main()
{
int arr[] = {
0,3,2 };
int sz = sizeof(arr) / sizeof(arr[0]);
int ret=missingNumber(arr,sz);
printf("%d\n", ret);
return 0;
}
思路2:异或
#include <stdio.h>
int missingNumber(int* nums, int numsSize)
{
int i = 0;
int ret = 0;
for (i = 0; i <= numsSize; i++)
{