C语言寻找两个数组的交集
力扣(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; }