在排序数组中的O(Log n)中重复检测

时间:2016-07-22 21:12:13

标签: algorithm sorting array-algorithms

给定一个大小为n的排序整数数组A,其中n是4的倍数。有人可以帮我找到一个算法来决定是否存在一个在数组中至少重复n / 4次的元素O(log n)时间。

1 个答案:

答案 0 :(得分:2)

如果元素重复n / 4次,则它还必须占用以下索引之一:n/4, 2n/4, 3n/4, n

对于这些元素中的每一个,进行两次二进制搜索以找到它占据的第一个索引和最后一个索引。

这总计是4 * 2二进制搜索,每次搜索都需要O(logn)次。这使您的总运行时间为O(8*logn) = O(logn)