Добавляйте числа в множество и возвращайте false при первом уже встреченном значении. Если обход завершился без повторов, результат true.
Определение уникальности элементов в массиве целых чисел
Добавляйте числа в множество и возвращайте false при первом уже встреченном значении. Если обход завершился без повторов, результат true.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, которая:
- Принимает массив целых чисел (тип []int).
- Возвращает true, если каждый элемент массива встречается только один раз (отсутствуют дубликаты).
- Возвращает false, если в массиве присутствует хотя бы один повторяющийся элемент.
Ответ
Добавляйте числа в множество и возвращайте false при первом уже встреченном значении. Если обход завершился без повторов, результат true.
Реализация Go:
func allUnique(nums []int) bool {
seen := make(map[int]struct{}, len(nums))
for _, n := range nums {
if _, exists := seen[n]; exists { return false }
seen[n] = struct{}{}
}
return true
}
Среднее время O(n), память O(n). Пустой и nil-слайс считаются уникальными. Сортировка на месте даёт другую альтернативу: меньше дополнительной памяти, но изменяет порядок и требует O(n log n).