【问题标题】:How do I find the most dominant bit of a position in the given set of numbers?如何在给定的一组数字中找到一个位置的最主要位?
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 2016-11-29
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2013-08-01
    • 2022-01-08
    • 2021-03-02
    • 2013-06-16
    相关资源
    最近更新 更多