Учитывая, что являются целыми числами, такими, что для всех , и вхождением каждого число, кроме определенного числа в является нечетным числом. Попробуйте найти число, вхождение которого является четным числом.
Существует алгоритм : мы сортируем на и разбиваем на множество частей, значения элементов которых являются то же самое, поэтому мы можем посчитать вхождение каждого элемента.
Я хочу найти алгоритм -время-и- -пространства в худшем случае .
Предположим, что и , поэтому радикальная сортировка недопустима. Двоичные побитовые операции допустимы, например, .
algorithms
search-algorithms
Yai0Phah
источник
источник
Ответы:
Вот идея простого алгоритма; просто посчитай все вхождения!
В общем, это дает вам алгоритм линейного времени, который может использовать (в смысле выделения) много памяти. Обратите внимание, что возможность произвольного доступа к в постоянное время независимо от имеет решающее значение.C m
При таком подходе дополнительная оценка является более сложной; Я не знаю какой-либо словарной структуры данных, которая предлагает поиск времени. Вы можете использовать хеш-таблицы, для которых здесь есть реализации с ожидаемым временем поиска ( размером таблицы, числом хранимых элементов), так что вы можете получить сколь угодно хороший результат с линейным пространством - в ожидании. Если все значения в соответствуют одному и тому же хеш-значению, вы облажались.O(n) O(1) O(1+k/n) n k A
источник
Почти тривиальное решение - использующее, однако, пространство - это использование хэш-карты. Напомним, что хэш-карта имеет амортизированную среду выполнения для добавления и поиска элементов.Θ(n) O(1)
Следовательно, мы можем использовать следующий алгоритм:
Выделяют хэш - карту . Итерация над . Для каждого элемента увеличьте количество видимых случаев, т.е. .H A i∈A H(i)++
Выполните итерацию по набору ключей хэш-карты и проверьте, какой из ключей имеет четное количество вхождений.
Теперь это простой алгоритм, который не использует какой-то большой трюк, но иногда даже этого достаточно. Если нет, вы можете указать, какие ограничения пространства вы накладываете.
источник