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)
有没有更好的方法?