元素个数和数据范围一致,这不又是用复合数组吗,一个数组的值作为另一个数组的下标,用作计数或标记。
int* findDisappearedNumbers(int* nums, int numsLen, int* returnSize ) {
    int mark[10001] = {0};   //标记数组
    int* ret = (int*)malloc(sizeof(int) * 10001);  //用指针定义返回数组
    int i = 0;
    for(i = 0; i<numsLen; i++){
        mark[nums[i]] = 1;    //把nums数组中出现过的数在mark数组中标记为1
    }
    int j = 0;
    for(i = 1; i<=numsLen; i++){  //遍历标记数组,元素个数和nums数组一样
         if(mark[i] == 0)   //有标记=0表示没有出现过
             ret[j++] = i;   //那么就记录在返回数组里
     }
    *returnSize = j;   //j即返回数组的长度
    return ret;
}