Find the nth most frequent number in array.
(There is no limit on the range of the numbers)
できると思います
(i)C++のマップを使用してすべての要素の出現を保存します
(ii)要素の出現(または頻度)の線形時間で最大ヒープを構築し、次にN番目の要素まで抽出します。各抽出はヒープ化するのにlog(n)時間を要します。
(iii)N番目に頻度の高い番号の頻度を取得します
(iv)次に、ハッシュを線形検索して、この頻度を持つ要素を見つけることができます。
時間-O(NlogN)スペース-O(N)
より良い方法はありますか?