示例:
11: 01011
18: 10010
2: 00010
Ans: 00010
在零位(最右边),我的0比1更多。因此,我的答案应为0.同样,在第一位,我有1作为显性位,依此类推。
有没有办法使用基本的按位运算符找到它,还是应该使用任何其他可以实现此结果的位掩码?我正在寻找一个O(1)解决方案。
答案 0 :(得分:1)
如果您有三个输入x,y,z,则可以使用
(x & y) | (z & (x | y))
对于任何其他恒定数量的输入,可能会找到类似的公式。