
image.png
// C
#include <stdio.h>
#include <stdlib.h>
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)
{
if((nums1Size <= 0) || (nums2Size <= 0)) {
*returnSize = 0;
return NULL;
}
int hash[10000] = {0};
for(int i = 0; i < nums1Size; i++) {
hash[nums1[i]] = 1;
}
int arr[1000];
int cnt = 0;
for(int j = 0; j < nums2Size;j++) {
if(hash[nums2[j]] == 1){
arr[cnt] = nums2[j];
cnt++;
hash[nums2[j]] = 0;
}
}
*returnSize = cnt;
int *res = (int* )malloc(sizeof (int) * cnt);
for(int m = 0; m < cnt; m++) {
res[m] = arr[m];
}
return res;
}
int main(void)
{
int nums1[] = {1,8,2,1};
int nums2[] = {2,8};
int ret = 0;
int* retArr = malloc(1000);
retArr = intersection(nums1,sizeof(nums1)/sizeof(nums1[0]),nums2,sizeof (nums2)/sizeof (nums2[0]),&ret);
for(int i = 0; i < ret; i ++){
printf("%d ", *(retArr+i));
}
return 0;
}
网友评论