求两个自然数组中的交集

2014/08/1515:11:44 发表评论

题目:有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;
}

 

  • 微信扫码赞助
  • weinxin
  • 支付宝赞助
  • weinxin

发表评论

您必须才能发表评论!