假设所有数字都在 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/