文章目录
思路
解析
1、搜寻两数组的并集,所以数字的数量不重要,重要的是存在性
2、下面代码的做法是以空间换时间,也可以双重for循环来做,也比较简单,有兴趣可以试试
步骤
1、
创建nums1_t数组
将nums1数组的值映射到nums1_t数组,index为nums1数组的值,value为1(1表示index存在)
2、
创建nums2_t数组
将nums2数组的值映射到nums2_t数组,index为nums2数组的值,value为1(1表示index存在)
3、
遍历 nums1_t数组 nums2_t数组,若对于相同的index它们有相同的value=1,说明nums1数组、nums2数组中同时有index
就将该index值存入nums2_t数组,并更新returnSize
代码
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
int nums1_t[1001];
int *nums2_t=(int*)malloc(sizeof(int)*1001);
*returnSize=0;
for(int i=0;i<1001;i++){
nums1_t[i]=0;
nums2_t[i]=0;
}
for(int i=0;i<nums1Size;i++){
nums1_t[nums1[i]]=1;
}
for(int i=0;i<nums2Size;i++){
nums2_t[nums2[i]]=1;
}
for(int i=0;i<1001;i++){
if(nums1_t[i]==1 && nums2_t[i]==1){
nums2_t[(*returnSize)++]=i;
}
}
return nums2_t;
}