C语言寻找两个数组的交集

发布时间 2023-09-25 16:28:51作者: 朵朵奇fa

 

 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){

    int counter[1000] = {0};
    
    int left = 0;
    int lessSize = nums1Size < nums2Size ? nums1Size : nums2Size;
    int* resultList = (int*)malloc(lessSize*sizeof(int));

    // hash nums1
    for (int i = 0; i < nums1Size; i++){
        counter[nums1[i]] ++;
    }

    for (int i = 0; i < nums2Size; i++){
        if (counter[nums2[i]] > 0){
            resultList[left] = nums2[i];
            counter[nums2[i]] = 0;//防止重复的元素,找到有交集之后就去除nums1 counter里面的记数
            left++;
        }
    }

    * returnSize = left;
    return resultList;
}