为集合建立一个索引,1号元素用1表示,2号元素用2表示,以此类推。当取了某一元素,相应索引号置1;若索引号完全相同,表示两集合相等。可以用位实现。也可以借用pair/set实现。复杂度O(n)。
[/Quote]
恩,用位图来做确实是个O(n)的好方法。也可以这样比,第一次在内存区M上设置位值(0或者1),针对第2个子集合,还在M上进行操作:
int count = 0; //add 1 when one element is processed in subset1
...
...
//processing subset2
assert(count);
for(int e : subset2){
if(M(e) == 1)// has been set to 1
{
count --;
continue;
}
break; //e is a different element to subset1
}