力扣: 268. 丢失的数字

在这里插入图片描述
在这里插入图片描述
思路1:
用bool数组标记数字是否出现,输出没有出现的数字。
注意bool数组要比nums数组大1,防止少的是最后一个元素

int missingNumber(int* nums, int numsSize){
    
    
    bool *a=(bool *)malloc(sizeof(bool)*(numsSize+1));
    int i;
    for(i=0;i<numsSize+1;i++)
    {
    
    
        a[i]=false;
    }
    for(i=0;i<numsSize;i++)
    {
    
    
        a[nums[i]]=true;
    }
    for(i=0;i<numsSize+1;i++)
    {
    
    
        if(a[i]==false)
            return i;
    }
    return 0;
}

思路2:
用相邻的数做差,看差是不是等于1
思路3:
计算总的数和,用和挨个减去数组中的数,剩下的数就是缺少的数。

int missingNumber(int* nums, int numsSize){
    
    
   int sum=numsSize*(numsSize+1)/2;
   for(int i=0;i<numsSize;i++)
    {
    
    
       sum-=nums[i];
    }
    return sum;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/115027384