Определение повторяющихся элементов в массиве

Добавляйте числа в HashSet: если add вернул false, такое значение уже встречалось. Можно сразу завершить обход с true.

Короткий ответ

Что ответить на собеседовании

Добавляйте числа в HashSet: если add вернул false, такое значение уже встречалось. Можно сразу завершить обход с true.

Подробный разбор

Ответ с пояснениями

Условие

Функция должна установить, есть ли в переданном массиве хотя бы один элемент, встречающийся более одного раза.

Пример: Вход: [1, 2, 3, 4, 5] → false Вход: [1, 2, 3, 1, 5] → true

class Main {
    public static void main(String[] args) {
        int[] arr;
        boolean hasDup = containsDuplicate(arr);
    }

    public static boolean containsDuplicate(int[] numbers) {
        return false;
    }
}

Ответ

Добавляйте числа в HashSet: если add вернул false, такое значение уже встречалось. Можно сразу завершить обход с true.

public static 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, исходный массив не меняется. В приведённом main переменная arr объявлена, но не инициализирована: перед вызовом нужно присвоить ей массив, иначе программа не скомпилируется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее