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