【发布时间】:2018-08-11 22:52:12
【问题描述】:
例子:
11: 01011
18: 10010
2: 00010
Ans: 00010
在零位(最右边),我的 0 比 1 的数量多。因此我的答案应该是 0。同样,在位置 1,我有 1 作为显性位,依此类推。
有没有办法使用基本的按位运算符找到这个,或者我应该使用任何其他可以达到这个结果的位掩码?我正在寻找相同的 O(1) 解决方案。
【问题讨论】:
-
按位运算是全有或全无运算。没有“显性位”的概念。我认为您将不得不超越简单的位操作。
-
I am looking for a O(1) solution for the same.那是不可能的。如果您有一组 100 个数字,您如何在一组 3 个数字中找到答案?至少您需要读取集合中的每个数字,这将是 O(n)。你可以为整个算法做的最好的可能是 O(n log n)
标签: binary bit-manipulation bitwise-operators bit