给定两个大小为A
B
和N
的数组K
如何找到X = {i x j | i ∈ A and j ∈ B}
集中的O(N^2 log(n))
个最大元素?
我通过形成集合X
,对其进行排序,然后在最后的K
位置找到元素来提出minifyEnabled
解决方案。是否有更好的解决方案,其复杂性较低?
答案 0 :(得分:2)
给定候选编号,您可以使用A和B的排序表示中的两个指针来检查时间O(N)。它在集合中具有哪个等级{i x j | i∈A和j∈B}。因此,一种可能的解决方案是对ixj的值使用二进制搜索,运行时为O(N *(log N + log U))其中U是绘制A和B的Universe的大小。
答案 1 :(得分:1)
这里有一个悬而未决的成果 - https://en.wikipedia.org/wiki/Quickselect (注意最后一节 - 它也可能有最坏的情况表现O(n))
您只需使用所有产品创建数组,然后使用上述算法选择第k个元素。总计它将是O(n ^ 2)。
但我怀疑这里应该有更好的东西......