【发布时间】:2016-08-31 13:58:51
【问题描述】:
在 O(n) 时间和 O(1) 额外空间内找到最大重复数(出现次数最多的数)。
我认为我可以使用维护计数数组的计数排序阶段,然后可以在 O(N) 中完成。我说的对吗?
但是如何处理额外的空间。还有其他有效的算法吗?
【问题讨论】:
-
“最大重复次数”是指出现次数最多的次数,还是重复次数最多的次数?
-
出现次数最多的数
-
我认为这是不可能的。我能想到的最好的方法是排序 (
O(n*log(n))) + 扫描排序数组 (O(n))。 -
它们是整数吗?对可能出现的最大或最小数字是否有任何限制?
-
还有geeksforgeeks.org/find-the-maximum-repeating-number-in-ok-time。这种方法的另一个问题是原始数组被修改了,需要另一个
O(n)操作才能取回原始值。
标签: arrays sorting counting-sort