n00*_*123 1 algorithm bitwise-operators bitwise-and
给定一个非常大的整数数组,其中元素可以达到10 ^ 9,如何找到具有最大AND值的对.我目前的方法是计算所有可能的对并遍历它并找到最大值,但是它非常慢.还有其他方法吗?
只要您能找到至少两个具有相同最高有效位集的数字,解决方案将涉及其中两个.
接下来,丢弃所有其他元素并删除此MSB剩余的所有未丢弃的数字并解决相同的问题.直到你只剩下两个数字或者没有什么可做的.
例如:
input || first iteration | second iteration
=================================================================
1110010 || x | x
0110111 || discarded | discarded
1000000 || x | discarded
1000010 || x | x
=================================================================
=> solution: first and last
Run Code Online (Sandbox Code Playgroud)
这是O(n log max_element).
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |