arrays - 数组中出现次数最多的元素

标签 arrays

假设所有数字都在 0 到 n-1 范围内,其中 n 是数组的长度。

如何在线性时间和恒定空间中解决这个问题?

最佳答案

您可以重复使用给定的数组作为数字计数器。只需迭代数组并增加相应的计数器即可。唯一的技巧是每次增加 n,而不是 1:

for (int i = 0; i < n; ++i) {
    arr[arr[i]%n] += n;
}

在此循环之后,元素 arr[i] 将更改为 arr[i]+n*count[i],其中 arr[i]

关于arrays - 数组中出现次数最多的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37628309/

相关文章:

javascript - 如何将数组的内容输出到 HTML div 容器?

ruby - 如何删除数组哈希中的部分?

javascript - Ember 和 Handlebars 迭代集合数组

java - 使用 System.arraycopy 复制到 ArrayList 时出现异常,得到 : ArrayStoreException: null

javascript - 从嵌套对象数组中递归创建字符串?

c++ - 将私有(private)指针数组初始化为 null

javascript - 无法复制多维数组

java - 使用 ArrayList<Integer> 进行排列,在控制台中按 10 的大小打印

javascript - 从Typescript中的数组中选择N个随机项目的函数

android - JNI : How to get jbyteArray size