方法一:相减法
int missingNumber(int* nums, int numsSize){
int n=numsSize+1;
int ret1=0;
int ret2=0;
//求出0-n数字和
for(int i=0;i<n;++i) //这里的i在for中定义也可以,外面也可以,但必须要int 去定义
{
ret1+=i;
}
//求出数据元素和
for(int j=0;j<numsSize;++j)
{
ret2+=nums[j];
}
return ret1-ret2;
}
方法二:异或法
原理就是俩个相同的数异或等于0,且0和任何数异或都等于他本身。
请看代码
int missingNumber(int* nums, int numsSize){
int ret=0;
int n=numsSize+1;
for(int i=0;i<numsSize;++i)//异或数组所有元素到ret中
{
ret^=nums[i];
}
for(int j=0;j<n;++j) //继续异或0-n之间的所有数到ret中
{
ret^=j;
}
return ret;
}
最后时原题目描述: