✨欢迎来到脑子不好的小菜鸟的文章✨
创作不易,麻烦点点赞哦
所属专栏:刷题
我的主页:脑子不好的小菜鸟
文章特点:关键点和步骤讲解放在
代码相应位置
看本文章之前,建议先看看这篇对哈希算法的讲解哦,可能事半功倍哦~
传送门:常见的三种哈希结构(数组,set,map)-CSDN博客
349. 两个数组的交集 - 力扣(LeetCode)
qsort函数不了解的可看我之前的文章:qsort函数的使用和模拟实现排序-CSDN博客
/*法一*/
/*思路:排序+双指针*/
// int cmp(const void* e1, const void* e2)
// {
// return *(int*)e1 - *(int*)e2;
// }
// int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)
// {
// int book[1005] = { 0 };
// //要有一个标记的数组,防止数组中出现重复的数
// qsort(nums1, nums1Size, sizeof(nums1[0]), cmp);
// qsort(nums2, nums2Size, sizeof(nums2[0]), cmp);
// int a = nums1Size < nums2Size ? nums1Size : nums2Size;
// int* c = (int*)malloc(a * sizeof(nums1[0]));
// int i = 0, j = 0, h = 0;
// //i:nums1的下标 j:nums2的下标 h:c的下标
// while (i < nums1Size && j < nums2Size)
// {
// if(nums1[i] == nums2[j])
// {
// if (book[nums1[i]] == 0)
// {
// book[nums1[i]] = 1;
// c[h] = nums1[i];
// h++;
// }
// i++;
// j++;
// }
// else if (nums1[i] > nums2[j])
// {
// j++;
// }
// else
// {
// i++;
// }
// }
// *returnSize = h;
// int* b = (int*)malloc(h * sizeof(nums1[0]));
// for (int i = 0; i < h; i++)
// {
// b[i] = c[i];
// }
// return b;
// }
/*法二:哈希表*/
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)
{
int h=0;
int hash[1001]={0};
int i=0;
int max=nums1Size
最后祝大家题题AC,只盼做个WA梦 ~