绝密543哪个台播出在哪个频道播出 百度 影音

求两无序不反复数组的交集 - 编程当前位置:& &&&求两无序不反复数组的交集求两无序不反复数组的交集&&网友分享于:&&浏览:13次求两无序不重复数组的交集求两无序不重复数组的交集
//输入:a[]={5,7,8,9,1,2,3 }; b[]={2, 8,10,4,6,7};
//输出:{2,7,8}
判断a数组元素值的元素是否在b中,是则输出之。
时间复杂度:O(n2)
cmpInterSection(int a[], int b[], int m, int n)
for(int i = 0; i & i++)
for(int j = 0;j & j++)
if(a[i] == b[j])
cout && a[i] && &\t&;
}//end for j
}//end for i
1)对两数组进行排序;
2)一次循环判断a和b中元素是否相等,相等则输出;不等则小的值++。
时间复杂度:O(nlogn)
//快排之分割
int divided(int nArr[], int nLeft, int nRight)
int pivot = nArr[nLeft];
while(nLeft & nRight) //×???while?->>o
while(nLeft & nRight && nArr[nRight] &= pivot)
//×???u???
nArr[nLeft] = nArr[nRight];
while(nLeft & nRight && nArr[nLeft] &= pivot)
//×???u???
nArr[nRight] = nArr[nLeft];
nArr[nLeft] =
//快排之递归
void quickCurve(int nArr[], int nLeft, int nRight)
int nPivotPos = 0;
if(nLeft & nRight)
nPivotPos = divided(nArr,nLeft,nRight);
quickCurve(nArr,nLeft,nPivotPos-1);
quickCurve(nArr,nPivotPos+1,nRight);
void quickSort(int nArr[], int nLen)
quickCurve(nArr,0,nLen-1);
void interSectionOfArray(int a[], int b[], int m, int n)
quickSort(a,m);
quickSort(b,n);
//一次循环筛选出交集.
if( m & n)
int j = 0;
int i = 0;
while(i & m)
if(a[i] == b[j])
cout && a[i] && &\t&;
else if(a[i] & b[j])
hash表存储两数组到一个表中,统计次数累计为2的元素输出即可。
时间复杂度:O(n),典型的以空间换时间的方法。
ypedef struct HASHSET
int nC //计数
hashSet* pSetArray = new hashSet[m*n]; //空间换时间
for(int i = 0; i &m*n; i++)
pSetArray[i].key = 0;
pSetArray[i].nCnt = -1;
//O(n)实现输出…
void hashInterSection(hashSet* pSetArray, int a[], int b[], int m, int n)
for(int i = 0; i & i++)
pSetArray[a[i]].key = a[i];
pSetArray[a[i]].nCnt++;
for(int j = 0; j & j++)
pSetArray[b[j]].key = b[j];
pSetArray[b[j]].nCnt++;
for(int k = 0; k & m*n; k++)
if(pSetArray[k].nCnt == 1)
cout && pSetArray[k].key && &\t&; //两次累加-1+1+1=1.
& & & &或者大家有什么更好的方法,欢迎讨论,谢谢!
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有如何判断一个数组是否存在某个字符串? - 貌似稿手的博客 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
如何判断一个数组是否存在某个字符串?
已有 444 次阅读 02:56
& strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是:&&& & & & & & & i=strcmp(字符串,字符串);&&&&&&&& 其中,字符串1、字符串2均可为字符串常量或变量;i&& 是用于存放比较结果的整型变量。比较结果是这样规定的:&&①字符串1小于字符串2,strcmp函数返回一个负值;②字符串1等于字符串2,strcmp函数返回零;③字符串1大于字符串2,strcmp函数返回一个正值;那么,字符中的大小是如何比较的呢?来看一个例子。&&&&&&&& 实际上,字符串的比较是比较字符串中各对字符的ASCII码。首先比较两个串的第一个字符,若不相等,则停止比较并得出大于或小于的结果;如果相等就接着 比较第二个字符然后第三个字符等等。如果两上字符串前面的字符一直相等,像"disk"和"disks"&& 那样,&& 前四个字符都一样,&& 然后比较第 五个字符,&& 前一个字符串"disk"只剩下结束符'/0',后一个字符串"disks"剩下's','/0'的ASCII码小于's'的ASCII 码,所以得出了结果。因此无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符'/0'为止,就能得出结果。注意:字符串是数组类型而非简单类型,不能用关系运算进行大小比较。if("ABC"&"DEF")&& /*错误的字符串比较*/&&&&&&&& if(strcmp("ABC","DEF")&& /*正确的字符串比较*/参考来源:http://blog.csdn.net/xuefu2008/article/details/4662534
作者的其他最新博客
评论 ( 个评论)
Powered by> Q:如何取两个数组的交集、并集和差集? &&&复制链接A:天软平台上,可通过多种方式取得两个数组的交集、并集和差集。
通过函数FilterIntersectionPart2(用于一维数组)、
&&&&FilterIntersectionPart(用于二维数组);
通过矩阵集合运算关键字intersect、union2、minus(一维或二维数组均适用)
&&&&范例如下:
一维数组
通过函数FilterIntersectionPart2
&&&&
&&&&&&&a&:=&array(1,2,3,4);
&&&&&&&b&:=&array(3,4,5,6);
&&&&&&&r&:=&array();
&&&&&&&r['交集']&:=&&FilterIntersectionPart2(a,b,'IN');
&&&&&&&r['并集']&:=&&FilterIntersectionPart2(a,b,'ALL');
&&&&&&&r['差集']&:=&&FilterIntersectionPart2(a,b,'NOT&IN');
&&&&&&&return&r;
&&&&
&&&&返回结果:
&&&&
通过矩阵集合运算关键字
&&&&
&&&&&&&a&:=&array(1,2,3,4);
&&&&&&&b&:=&array(3,4,5,6);
&&&&&&&r&:=&array();
&&&&&&&r['交集']&:=&&a&intersect&b;
&&&&&&&r['并集']&:=&&a&union2&b;
&&&&&&&r['差集']&:=&&a&minus&b;
&&&&&&&return&r;
&&&&
&&&&返回结果:
&&&&
二维数组
通过函数FilterIntersectionPart
&&&&
&&&&&&&a&:=&array(('a':1),('a':2),('a':3),('a':4));
&&&&&&&b&:=&array(('a':3),('a':4),('a':5),('a':6));
&&&&&&&return&FilterIntersectionPart(a,b,'a','ALL');\\并集
&&&&
&&&&返回结果:
&&&&
通过矩阵集合运算关键字
&&&&
&&&&&&&a&:=&array(('a':1),('a':2),('a':3),('a':4));
&&&&&&&b&:=&array(('a':3),('a':4),('a':5),('a':6));
&&&&&&&return&a&union2&b;\\并集
&&&&
&&&&返回结果:
&&&&欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 11894 人关注过本帖
标题:如何比较两个字符串是否相同
来 自:向日葵幼儿园
等 级:黑侠
帖 子:306
专家分:586
结帖率:88.89%
&&已结贴√
&&问题点数:5&&回复次数:19&&&
如何比较两个字符串是否相同
如何比较两个字符串是否相同,
注意不是两个字符串的大小,
因为我要保存文件,要输入文件夹名,用来判断文件夹名是否已经存在的
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:22
#include &stdio.h&
int main()
char a[10],b[10];
&&&gets(a);
&&&gets(b);
&&& while(a[i]==b[i]&&a[i]!='\0'&&b[i]!='\0')
&&&&&&&&i++;
&&& if(a[i]==b[i])
&&&&&&&&printf(&0&);
&&& else if(a[i]&b[i])
&&&&&&&&printf(&1&);
&&&&&&&&printf(&-1&);
&&&return 0;
来 自:向日葵幼儿园
等 级:黑侠
帖 子:306
专家分:586
回复 2楼 幸福最晴天
谢谢,不过我想要的是更加简洁的方法!!
等 级:贵宾
威 望:58
帖 子:3841
专家分:11385
有库函数为什么不用?
总有那身价贱的人给作业贴回复完整的代码
来 自:向日葵幼儿园
等 级:黑侠
帖 子:306
专家分:586
回复 4楼 embed_xuel
是库函数里面的那个函数啊?我没找到,我的意思也是想用库函数的!但像strlen()或strcmp()这些都不能达到我的目的
等 级:蝙蝠侠
帖 子:196
专家分:965
为什么不直接判断文件夹是否存在,而要用字符串去比较啊
来 自:向日葵幼儿园
等 级:黑侠
帖 子:306
专家分:586
回复 6楼 jk_love
文件件名是字符串吧,那只能用字符串做比较吧
来 自:萨塔星
等 级:青峰侠
帖 子:712
专家分:1788
应该可以用strcmp:
if(strcmp(A,B) == 0)
如果返回值为0的话就表示它们大小相等,也就是相同咯
I have not failed completely
来 自:江西财经大学
等 级:版主
威 望:77
帖 子:3233
专家分:12486
[fly]存在即是合理[/fly]
来 自:向日葵幼儿园
等 级:黑侠
帖 子:306
专家分:586
回复 8楼 神龙赖了
ABC和CBA他们用strcmp做比较都是一样的,因
为两个字符串中字符的ASCII编码是一样的,只是顺序不一样。
虽然ABC和CBA这样名字已经不一样了,但是我用strcmp(str1,str2)来判断的时候,
ABC和CBA就同名了
版权所有,并保留所有权利。
Powered by , Processed in 0.025693 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 绝密押运全集百度影音 的文章

 

随机推荐