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

Первое неповторяющееся число в примере — 6. Два прохода позволяют сначала узнать частоты, а затем выбрать первый подходящий элемент в исходном порядке.

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

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

Первое неповторяющееся число в примере — 6. Два прохода позволяют сначала узнать частоты, а затем выбрать первый подходящий элемент в исходном порядке.

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

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

Условие

Дан массив целых чисел, необходимо найти первый элемент, который встречается только один раз.

public class Main{
    public static void main(String[] args){
        
        int[] numbers = {9, 4, 9, 6, 7, 4, 5};
    }
}

Ответ

Первое неповторяющееся число в примере — 6. Два прохода позволяют сначала узнать частоты, а затем выбрать первый подходящий элемент в исходном порядке.

static java.util.OptionalInt firstUnique(int[] numbers) {
    var counts = new java.util.HashMap<Integer, Integer>();
    for (int n : numbers) counts.merge(n, 1, Integer::sum);
    for (int n : numbers)
        if (counts.get(n) == 1) return java.util.OptionalInt.of(n);
    return java.util.OptionalInt.empty();
}

Ожидаемое время O(n), память O(k). Пустой массив и массив без уникальных значений дают OptionalInt.empty(). Возвращение -1 как признак отсутствия неоднозначно, если -1 может входить в допустимые данные.

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

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

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

Подробнее