Сначала подсчитайте частоты, затем пройдите исходный массив и верните первый элемент с частотой 1. Порядок Dictionary не определяет «первый».
Напишите функцию, которая возвращает первый неповторяющийся элемент массива.
Сначала подсчитайте частоты, затем пройдите исходный массив и верните первый элемент с частотой 1. Порядок Dictionary не определяет «первый».
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сначала подсчитайте частоты, затем пройдите исходный массив и верните первый элемент с частотой 1. Порядок Dictionary не определяет «первый».
Swift-реализация:
func firstUnique<T: Hashable>(_ values: [T]) -> T? {
var counts: [T: Int] = [:]
for value in values { counts[value, default: 0] += 1 }
for value in values {
if counts[value] == 1 { return value }
}
return nil
}
Для [2, 3, 2, 4, 3] результат 4. Пустой массив или отсутствие уникального значения дают nil. Среднее время O(n), память O(k). Под «неповторяющимся» понимается встречающийся ровно один раз, а не один представитель каждой группы дубликатов.