C/C++ 最快的速度求两个数组的交集,提示数组中的元素是无序的,两数组长度不一样

 我来答
523841303
2012-05-28 · TA获得超过249个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:101万
展开全部
讲思路好了,a[n],b[m],从i = n-1开始,用a[i]与b数组所有的数比较,初始化k=0,如果有相同就将a[i]与a[k]交换,k++,不相同就n--,最后遍历完了a[n]就是交集的所有元素了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26ad406
2012-05-28 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1086万
展开全部
哈希
如果知道数组内数的范围1-1000,以空间换时间,设置一个长度1000的数组,遍历两个数组,再遍历你设置的那个数组,就能找出来
不知道范围就得找哈希函数映射到一个范围内再找
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zcfeiyu123
2012-06-06
知道答主
回答量:3
采纳率:0%
帮助的人:3.7万
展开全部
sort(A);
sort(B);
set_intersection(A,B);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牧野XXX
2012-05-28 · TA获得超过339个赞
知道小有建树答主
回答量:825
采纳率:79%
帮助的人:311万
展开全部
一个一个循环比较吧。木有其他方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可可托海的牧羊人Do
2012-05-28 · TA获得超过303个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:90万
展开全部
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "1111222333344455611122333";
char str2[] = "11222333664455778899112233";

char result[100];
int i=0;
int j=0;
int k=0;
int n,flag;
memset (result,0,sizeof(result));

while(str1[i]!='\0')
{
flag = 1;
for(n=0;n<k;n++)//查看此元素是否出现过
{

if(str1[i]==result[n])
{
flag = 0;
break;
}
}
if(flag)
{
j = 0;
while(str2[j]!='\0')
{
if(str1[i] == str2[j])
{
result[k++] = str1[i];
break;
}
j++;
}
}
i++;
}

printf("result :%s\n",result);
return 0;
}
楼主 求满意 求赞同 求给分 不明白的地方可以给我留言
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式