Это своего рода вопрос о домашнем задании, я долго об этом думал, и придумал пару решений, но я думаю, что существует лучший вариант.
Какой самый быстрый способ определить, есть ли в массиве элемент (int), который появляется только один раз? Любой элемент может появляться любое количество раз. {3, 1, 4, 1, 4, 3} вернет false, а {3, 1, 4, 1, 4, 1} вернет true (3 появляется один раз).
Нам разрешено использовать только те вещи, которые мы уже изучили (все основы, рекурсия, oop, поиск и сортировка algos, включая quicksort), поэтому создание хеш-таблицы не является вариантом.
Пока лучшее практическое решение, которое я придумал, сортирует его с помощью quicksort, затем проходит через него (O (nlogn)), лучшее непрактичное решение, которое я придумал, делает большой массив размером всех возможных значений int и а затем использовать его, похожую на хэш-таблицу (но этот массив слишком большой, чтобы фактически реализовать) (O (n))
Есть ли другой (практический) способ сделать это в O (n) времени?
EDIT: только что получил ответ от TA, предлагаемое решение O (n), о котором я слышал, было непрактичным (то же или похожее на то, что я предложил), и поэтому они сказали нам не использовать его. Я на 99% уверен, что лучший практический ответ (без хэш-таблиц) - это время O (nlogn).