查找元素在n元素数组中是否出现n / 4次

时间:2012-08-20 13:01:29

标签: algorithm

我被问到这个问题。我尝试使用多数元素方法,但它对我不起作用。请提供一些提示。

1 个答案:

答案 0 :(得分:6)

  1. 找出O(n)时间的中位数。
  2. 使用3路分区根据中位数对数组进行分区。
  3. 如果中位数本身是必需元素则完成
    否则
    在分区(中间的左侧和右侧)上应用多数元素算法。 (在你的情况下,找到在n / 2数组中出现超过n / 4次的元素)。两者都将在O(n)时间内运行。
  4. 总时间为3*O(n)=O(n) 希望这会有所帮助:)