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;
}