有两个整数集合A,B,验证A^B=B,即:A和B的交集为B
题目: 有两个整数集合A,B,写一算法,验证A是不是包含B,即:A与B的交集是不是B
分析:
1.对B中的每个元素,遍历A。时间复杂度为O(n*m)
2. 分别对A,B两个集合排序,用两个指针p1,p2从左到右依次扫描A,B。
当*p1<*p2时, ++p1;
当*p1>*p2时,return fasle;
当*p1==*p2时,++p1,++p2;
当p1未到末尾,p2到达末尾时,return true,否则return fasle
代码:
1: bool _include(int a[],int b[],int len1,int len2)2: {3: int i=0 ;
4: int j=0 ;
5: while(i<len1){
6: if (a[i]>b[j]){
7: break ;
8: }else if (a[i]<b[j]){9: ++i ;10: }else{
11: ++i ;12: ++j ;13: }14: if (j==len2-1){
15: return true ;16: }17: }18: return false ;19: }20: bool isInclude(int a[],int b[],int len1,int len2)21: {22: sort(a,a+len1) ;23: sort(b,b+len2) ;24: return _include(a,b,len1,len2) ;
25: }