Найти элемент который встречается наиболее часто в массиве
Нужно рекурсивно написать функцию поиска элемента который встречается (длина массива / 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)