Вам задан массив с целыми числами от 1 до 1 000 000. Одно целое число находится в массиве дважды. Как вы можете определить, какой из них? Можете ли вы придумать способ сделать это, используя небольшую дополнительную память.
Алго:
-
Решение 1:
- Есть хеш-таблица
- Итерация через массив и сохранение его элементов в хеш-таблице
- Как только вы найдете элемент, который уже находится в хеш-таблице, это дуп-элемент
-
Плюсы:
- Он работает в O (n) времени и только с одним проходом
- В нем используется O (n) дополнительная память
- Сортировка массива с использованием сортировки слиянием (O (nlogn))
- Повторите анализ, и если вы увидите элемент дважды, вы получите дубликат.
-
Плюсы:
- он не использует дополнительную память
- Время работы больше, чем O (n)
Можете ли вы, ребята, подумать о каком-либо лучшем решении?