给定n个位集,生成一个新的位集,其中在索引处设置一个位,如果n位集上的至少k out在该索引处设置了位。
n bitset的大小可能会有所不同。尺寸<= 10 8
示例:
n = 3 , k =2
10001
00101
10001
New Bitset : 10001
1. 第一种方法:
len = Max size from n bitsets
n = number of bitsets
n bitsets = List<Bitset> bitsets
Bitset newBitset = new Bitset(len);
int count = 0;
for(int i = 0; i < len; i++){
count = 0;
for(Bitset b : bitsets){
if(b.size() > i && b.get(i)){
count++;
}
}
if(count >= k){
newBitset.set(i);
}
}
// Complexity = O(len*n)
2。 第二种方法: 我们可以采用nCk的bitset组合,取每个和的AND 最后取得结果位集的OR以获得所需的位集。
我正在寻找更优化的解决方案。