采访问:如何在排序数组中找到最受欢迎的数字

时间:2015-04-27 08:37:51

标签: arrays binary-search sorted

一个数字很受欢迎,如果它看起来大于或等于N / 4次(N是数组的长度)他希望我利用数组的排序属性并提出比O更好的解决方案( n)时间复杂性。

1 个答案:

答案 0 :(得分:2)

我会采用与二元搜索类似的方法来实现。

首先,我会找到8个数字的值,它们将是0/8,1 / 8,2 / 8 ... 8/8的数组。您在二进制搜索某些内容时首先找到的数字相同。

由于相同的数字必须是数组大小的n / 4或更高,因此它必须至少达到行中的两个边界。与2/8和3/8的数字相同。

因此,这个数字和部分位置的识别是在恒定的时间内完成的。

然后,您只需继续查找它的起始位置和结束位置,这是典型的二分查找。

复杂性:O(log n)