Добавляйте числа в HashSet и возвращайте true при первой неуспешной вставке. Set.add возвращает false, если такое значение уже присутствует.
Определение наличия повторяющихся элементов в массиве
Добавляйте числа в HashSet и возвращайте true при первой неуспешной вставке. Set.add возвращает false, если такое значение уже присутствует.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан массив целых чисел numbers. Требуется вернуть true, если хотя бы одно значение встречается в массиве два или более раз, и false, если все элементы уникальны.
Ответ
Добавляйте числа в HashSet и возвращайте true при первой неуспешной вставке. Set.add возвращает false, если такое значение уже присутствует.
public boolean containsDuplicate(int[] numbers) {
java.util.Set<Integer> seen = new java.util.HashSet<>();
for (int number : numbers) {
if (!seen.add(number)) return true;
}
return false;
}
Ожидаемое время O(n), дополнительная память O(n). Для пустого массива и одного элемента ответ false. Исходные данные не меняются. Сортировка с проверкой соседей — альтернатива O(n log n), если допустимо изменение массива или создание его копии.