349. 两个数组的交集

2021-01-08  本文已影响0人  chip1234
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;
}
上一篇下一篇

猜你喜欢

热点阅读