0
点赞
收藏
分享

微信扫一扫

Intersection of Two Arrays

求阙者 2022-12-13 阅读 88


​​https://leetcode.com/problems/intersection-of-two-arrays/​​

Given two arrays, write a function to compute their intersection.

Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

Note:
Each element in the result must be unique.
The result can be in any order.

这里的思路是先把两个数组进行排序,可以调用

/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/


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) {
int i = 0, j = 0, k = 0;
int temp = nums1Size < nums2Size ? nums1Size : nums2Size;
int *intersection = (int *)malloc(temp * sizeof(int));

// remove the duplicates
qsort(nums1, nums1Size, sizeof(nums1[0]), cmp);
qsort(nums2, nums2Size, sizeof(nums2[0]), cmp);

//
while(i < nums1Size && j < nums2Size) {
if(nums1[i] > nums2[j]) {
j++;
} else if(nums2[j] > nums1[i]) {
i++;
} else {
if(k == 0 || (k >= 1 && nums1[i] != intersection[k-1] ))
intersection[k++] = nums1[i];

i++;
j++;
}
}// end while
*returnSize = k;

return intersection;
}


举报

相关推荐

0 条评论