数组元素个数是1到1000,数组元素范围也是1到1000,冥冥中就是让用复合数组,第一个数组的值作为第二个数组的下标。
先遍历一边第一个数组,用一个标记数组记录各个值是否出现,初始值均为0,出现则变成1.
再遍历第二个数组,发现标记数组值为1的,表示之前出现过,那么就记录下元素值,并把标记值置0,那么下次再遇到这个下标的就不用比较了,因为标记为0了。
int* intersection(int* nums1, int nums1Len, int* nums2, int nums2Len, int* returnSize ) {
    int marked[1001] = {0};  //标记数组
    int* res = (int*)malloc(sizeof(int) * 1001);  //返回数组要用指针定义,之前就是这错了
    int n = 0;
    for (int i = 0; i < nums1Len; ++i)
    {
        marked[nums1[i]] = 1;   //第一便遍历,把nums中出现过的数在marked中标记为1
    }
    for (int i = 0; i < nums2Len; ++i)
    {
        if (marked[nums2[i]] > 0)
        {
            res[n++] = nums2[i];   //记录公共元素值
            marked[nums2[i]] = 0;   //标记置0,同样的不用再比较
        }
    }
    *returnSize = n;
    return res;
}