Первое неповторяющееся число в примере — 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 может входить в допустимые данные.