Сравните каждый элемент с первым и верните его, если все равны. Для пустого массива и несовпадения нужно заранее выбрать представление результата.
Функция определения одинаковости элементов массива
Сравните каждый элемент с первым и верните его, если все равны. Для пустого массива и несовпадения нужно заранее выбрать представление результата.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию, которая проверяет, что все элементы переданного массива имеют одинаковое значение. Если проверка проходит успешно, функция должна вернуть любой элемент этого массива.
Ответ
Сравните каждый элемент с первым и верните его, если все равны. Для пустого массива и несовпадения нужно заранее выбрать представление результата.
func commonElement<T: Equatable>(_ values: [T]) -> T? {
guard let first = values.first else { return nil }
for value in values.dropFirst() {
if value != first { return nil }
}
return first
}
Для [4, 4, 4] вернётся 4, для [4, 5] и [] — nil. Время O(n), дополнительная память O(1). Если нужно различать пустой массив и неодинаковые значения, используйте отдельный enum результата. Для массива optional-элементов также важно не путать найденный nil-элемент с отсутствием общего результата.