350. 两个数组的交集 II
简要思路 两个数组先排序,再使用双指针依次比较,最终获取两个数组的交集元素,排序可使用qsort,具体代码如下。
int compare(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int* intersect(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
if (nums1Size < 1 || nums2Size < 1) {
*returnSize = 0;
return NULL;
}
int resSize = nums1Size < nums2Size ? nums1Size : nums2Size;
int *res = (int *)malloc(resSize * sizeof(int));
memset(res, 0, resSize * sizeof(int));
qsort(nums1, nums1Size, sizeof(int), compare);
qsort(nums2, nums2Size, sizeof(int), compare);
int index1 = 0;
int index2 = 0;
int index = 0;
while (index1 < nums1Size && index2 < nums2Size) {
if (nums1[index1] < nums2[index2]) {
index1++;
} else if (nums1[index1] > nums2[index2]) {
index2++;
} else {
res[index++] = nums1[index1];
index1++;
index2++;
}
}
*returnSize = index;
return res;
}
|