有两个整数集合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: }
posted @ 2012-03-22 15:09  Better-zyy  阅读(672)  评论(0编辑  收藏  举报