我有两个输入数组X和Y我想回到与频率最高的发生在阵列Y.排列X该元素什么是找到具有最高频率的数组中的元素最快的算法
的这样做的天真方式要求对于数组X的每个元素x,我线性搜索数组Y的出现次数,然后返回频率最高的元素x。伪算法:
max_frequency = 0
max_x = -1 // -1 indicates no element found
For each x in X
frequency = 0
For each y in Y
if y == x
frequency++
End For
If frequency > max_frequency
max_frequency = frequency
max_x = x
End If
End For
return max_x
由于有两个嵌套循环,该算法的时间复杂度为O(n^2)。我可以用O(nlogn)或更快的方式做到这一点吗?
当讨论具有两个或更多维度的问题时,通常使用每个变量讨论复杂性是一个好主意。既然'X
phs
2013-03-23 22:41:03