检查是否存在任何数字,至少出现array.size()/ 4次

时间:2019-01-05 22:23:59

标签: algorithm binary-search

给出一个未排序的数组,但是相同的元素彼此相邻。 是否可以检查数组是否包含至少出现array.size()/ 4次的任何元素?

使用哈希表进行线性扫描是微不足道的,我想知道是否有任何算法的复杂度甚至更高。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果相同元素始终仅在遍历中彼此相邻,则查找具有最大条目数的元素。 如果最大值为

int index=0, currentSize, maxSize = 0, currentElem;
while (index<array.length){
  currentElem = array[index];
  currentSize = 1;
  index++;
  while (index<array.length && currentElem==array[index]){
   currentSize++;
   index++;
  }

  if (maxSize<currentSize) {
    maxSize = currentSize;
  }
}

if (maxSize>=array.length/4) return "Yes";
else return "No";