找两个数组的交集
原题是:给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4]
说明:
输出结果中的每个元素一定是唯一的
我们可以不考虑输出结果的顺序。
解题步骤:先定义三个数组(a[],b[],c[]),a、b数组用于接受输入,c数组里的元素先开始全都置0,然后开始遍历数组a,使得以a数组元素值为下标的c数组中对应的元素变成1(c[a[k]]=1),然后开始对b数组进行遍历,这里判断条件很关键,当(c[b[l]]==1)时说明此时这个元素a数组中也出现过,然后将这个元素输出,注意在输出时一定要把c数组这个元素位置置0,因为题中要求输出元素只能是唯一的。
具体代码如下:
#include<stdio.h>
#define N 100
int main()
{
int c[N]={0};
int a[20],b[20];
int i=0,j=0,k,l;
printf("请输入第一个数组\n");
while(i<20)
{
scanf("%d",&a[i]);
if(a[i]==-1)//设置输入-1为结束条件
break;
i++;
}
printf("请输入第二个数组\n");
while(j<20)
{
scanf("%d",&b[j]);
if(b[j]==-1)
break;
j++;
}
for(k=0;k<i;k++)
{
c[a[k]]=1;
}
for(l=0;l<j;l++)
{
if(c[b[l]]==1)
{
c[b[l]]=0;//保证输出结果唯一
printf("%d ",b[l]);
}
}
return 0;
}