【leetcode】两个数组的交集

int cmp(const void* a,const void* b){
    return *(int*)a > *(int*)b;
}

int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
    if (!nums1Size || !nums2Size){
        *returnSize=0;
        return NULL;
    }
    qsort(nums1,nums1Size,sizeof(int),cmp);
    qsort(nums2,nums2Size,sizeof(int),cmp);
    int i=0,j=0,pst=0;
    while(i<nums1Size && j<nums2Size)
    {
        if (nums1[i]<nums2[j])
            i++;
        else if (nums1[i]>nums2[j])
            j++;
        else{
            nums2[pst++]=nums1[i];
            i++;
            j++;
            if (pst >1 && nums2[pst-1] == nums2[pst-2])
                pst--;
        }        
    }
    *returnSize=pst;
    return nums2;
}
原文地址:https://www.cnblogs.com/ganxiang/p/13728478.html