Binary 我如何在给定的一组数字中找到一个位置中最占优势的部分?

Binary 我如何在给定的一组数字中找到一个位置中最占优势的部分?,binary,bit-manipulation,bitwise-operators,bit,Binary,Bit Manipulation,Bitwise Operators,Bit,例如: 11: 01011 18: 10010 2: 00010 Ans: 00010 在位置0(最右边),我的0多于1。因此,我的答案应该是0。类似地,在位置1,我有1作为主导位,依此类推 有没有一种方法可以使用基本的位运算符找到这个结果,或者我应该使用任何其他可以实现这个结果的位掩码?我正在寻找同样的O(1)解决方案。如果您正好有三个输入x、y、z,您可以使用 (x & y) | (z & (x | y)) 对于任何其他恒定数量的输入,也可能找

例如:

11:  01011  
18:  10010  
 2:  00010    

Ans: 00010
在位置0(最右边),我的0多于1。因此,我的答案应该是0。类似地,在位置1,我有1作为主导位,依此类推


有没有一种方法可以使用基本的位运算符找到这个结果,或者我应该使用任何其他可以实现这个结果的位掩码?我正在寻找同样的O(1)解决方案。

如果您正好有三个输入x、y、z,您可以使用

 (x & y) | (z & (x | y))

对于任何其他恒定数量的输入,也可能找到类似的公式。

按位操作是全部或无操作。没有“主导位”的概念。我认为您必须超越简单的位操作。
我正在寻找一个O(1)解决方案。
这是不可能的。如果你有一组100个数字,你怎么能同时找到一组3个数字的答案?您至少需要读取集合中的每个数字,即O(n)。对于整个算法,您所能做的最好的可能是O(n logn)