【发布时间】:2011-08-14 21:16:56
【问题描述】:
有一个数组(大小为 N),其中一个元素重复超过 N/2 次,数组中的其余元素也可以重复,但只有一个元素重复超过 N/2 次。找到号码。
我能想到几种方法:
- 天真,将每个数字的计数保存在哈希图中。
- 最简单,对数组进行排序,第 n/2+1 个索引处的数字是 必填号码。
- 只保留找到的连续重复值的计数。查看 分别用于交替存储值的模式。
想不出更好的解决方案,必须有。
【问题讨论】:
-
来自 WIKI:通过将所有观察值从最低值到最高值排列并选择中间值,可以找到有限数字列表的中位数。基本上排序并给出你的号码:)
-
你的速度不能超过 O(N)。排序是多余的。