Найти элемент который встречается наиболее часто в массиве

Нужно рекурсивно написать функцию поиска элемента который встречается (длина массива / 2) раз в массиве через метод "divide and conquer". Сейчас у меня есть объективно не рабочая функция, которая даст верный ответ только в случае, когда все элементы будут равны.

   int majRep(std::vector<int> arr)//массив для упрощения равен вектору
{
  if (arr.size() > 1)
  {
    int a = majRep(std::vector<int>(arr.begin(), arr.end() - (arr.size() / 2)));
    int b = majRep(std::vector<int> (arr.begin() + (arr.size()/2),arr.end()));
    if (a == b)
    {
      return a;
    }
    return NULL;
  }
  return arr.front();
}

Не понимаю каким образом вообще написать рабочий рекурсивный алгоритм в принципе, а нужно еще и за время O(N logN)


Ответы (0 шт):