【发布时间】:2015-09-05 17:33:11
【问题描述】:
我最近遇到一个问题,它是关于计算数组中按位 & 为 0 的所有数字对。所需的复杂度为 O(n) 或 O(nlog(n)) 或更小。数字在 1 到 1000000 之间。
我的方法是以二进制形式写入每个数字,然后检查数字的每个位是 0 还是 1可以取任意数为 0*(any number) = 0。但我的时间复杂度是 O(n^2),不会通过。
【问题讨论】:
-
请查看this。
-
那是 O(n^2) 我需要 O(n) 或 O(nlog(n))
-
我不确定,它可以在少于
O(n^2)的时间内实现。我们需要对数组中的每个数字以及数组中的所有其他数字执行bitwise &。这里的优化是,算法不应该计算已经比较/计算的对。此类优化已在解决方案中到位。 -
你可以试试Bitwise Trie。虽然分析很复杂 - 它的运行时间将与匹配的数量成正比。如果您的数据集包含大量数字且大部分为 0 位,则它会运行得更慢。
-
你没有提到
n,而是作为主导函数的参数:请明确,包括报告给出0&结果的对数与计数他们。
标签: algorithm bitwise-and