查找列表中所需条目的数量?

时间:2012-07-02 09:13:53

标签: java algorithm comparison linear

设计一种算法,在给定数组中n个元素的列表的情况下,查找列表中出现次数超过n / 3次的所有元素。该算法应该以线性时间(n> = 0)

运行

您需要使用比较并实现线性时间。没有散​​列/过多的空间/并且不使用标准的线性时间确定性选择算法? 问题是自我阻塞我觉得??

1 个答案:

答案 0 :(得分:1)

提示:查看Boyer and Moore's Linear Time Vote Algorithm

<强>步骤:

  1. 使用0(n)时间中位数算法
  2. 查找数组的中位数
  3. 使用中位数作为枢轴元素的分区
  4. 在每个部分之间使用 moore的投票算法 a)中位数和第一元素和
    b)中位数和最后一个元素
  5. 检查中位数是否为必需元素。
  6. 有关解决此问题的更详细算法,请参阅this文档。真的,这会非常有帮助。

    有关更多答案,请参阅this类似文章。