Описание
Учитывая массив размером (n*k+b)
, где n элементов встречаются k раз, а один элемент встречается b раз, другими словами, существуют n+1
отдельные элементы. Учитывая, что 0 < b < k
найдите элемент, имеющий b раз.
Мои предпринятые решения
-
Очевидное решение будет использовать хеширование, но оно не будет работать, если числа очень большие. Сложность
O(n)
-
Использование карты для хранения частот каждого элемента, а затем перемещения карты, чтобы найти элемент, возникающий b раз. Поскольку Карта реализована как сбалансированные по высоте деревья, сложность будет
O(nlogn)
.
Оба моего решения были приняты, но интервьюер хотел линейного решения без использования хэширования и намека, которые он дал, чтобы высота дерева была постоянной в дереве, на котором вы храните частоты, но я не могу найти правильное решение пока.
Я хочу знать, как решить эту проблему в линейном времени без хеширования?
EDIT:
Пример:
Вход: n=2 b=2 k=3
Aarray: 2 2 2 3 3 3 1 1
Выход: 1