索引处给定位集中设置的位数

时间:2017-05-31 09:20:05

标签: algorithm bitset

给定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以获得所需的位集。

我正在寻找更优化的解决方案。

0 个答案:

没有答案