2 つの入力配列 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
ネストされたループが 2 つあるため、このアルゴリズムの時間計算量は O(n^2) になります。O(nlogn) 以上でこれを行うことはできますか?