【发布时间】:2014-03-24 12:02:30
【问题描述】:
不使用摩尔算法或哈希表,我需要在数组中找到出现次数超过n/2 的元素。
我知道我必须使用中位数的选择算法。我对选择算法返回的内容感到困惑,因为如果它返回中位数,我如何确定该元素在数组中的出现次数超过 n/2 次?
例如:
a [] = {4, 1, 5, 7, 8}
5 是中位数,但它出现的次数不超过n/2 次。
现在:
a[] = {5, 5, 3, 4, 5, 5}
在这种情况下,中位数是 5,它出现的次数超过了n/2 次。
【问题讨论】:
-
我不明白。我认为如果一个元素出现超过 n/2 次将是中位数,不是吗?
-
是的,但反过来不正确,中位数不必出现 n/2 次span>
-
所以只需找到中位数,然后检查它发生的频率
-
是的。我必须找到中位数,然后计算它的出现次数。
-
使用哈希表可能会比快速选择更快
标签: java algorithm select median