共计 1047 个字符,预计需要花费 3 分钟才能阅读完成。
题目:有 2 个自然数组 里面的保存着 100 以内的自然数,编程求出两个数组的交集。数组中可能有重复的数字,输出的交集中不包含重复的数字。
我的实现代码如下:
#include <stdio.h>
#include <string.h>
/* 输出交集数组,同时返回交集元素个数 */
int NaturalUnion(int a[], size_t len_a, int b[], size_t len_b, int c[])
{ int tmp[101];
int i,index=0;
if(a && b && (len_a != 0) && (len_b != 0))
{ memset(tmp,-1,sizeof(tmp)/sizeof(int));
for(i=0;i<len_a;i++)
{ tmp[a[i]] = a[i];
}
for(i=0;i<len_b;i++)
{ if(b[i] == tmp[b[i]])
{ c[index++] = tmp[b[i]];
}
}
}
return index;
}
int main(int argc,char *argv[])
{ int a[] = {1,2,3,3,4,6};
int b[] = {3,4,5,7,8,9,10};
int c[101];
int count = 0,i;
count = NaturalUnion(a,sizeof(a)/sizeof(int),b,sizeof(b)/sizeof(int),c);
for(i=0;i<count;i++)
{ printf("%d\n",c[i]);
}
return 0;
}
正文完
扫码赞助
