标签: algorithm sorting array-algorithms
给定一个大小为n的排序整数数组A,其中n是4的倍数。有人可以帮我找到一个算法来决定是否存在一个在数组中至少重复n / 4次的元素O(log n)时间。
答案 0 :(得分:2)
如果元素重复n / 4次,则它还必须占用以下索引之一:n/4, 2n/4, 3n/4, n。
n/4, 2n/4, 3n/4, n
对于这些元素中的每一个,进行两次二进制搜索以找到它占据的第一个索引和最后一个索引。
这总计是4 * 2二进制搜索,每次搜索都需要O(logn)次。这使您的总运行时间为O(8*logn) = O(logn)
O(logn)
O(8*logn) = O(logn)