Функция поиска узла с наименьшим значением

Пройдите массив один раз, сохраняя узел с минимальным значением. Пустой массив возвращает nil; при равенстве можно оставить первый найденный узел.

Короткий ответ

Что ответить на собеседовании

Пройдите массив один раз, сохраняя узел с минимальным значением. Пустой массив возвращает nil; при равенстве можно оставить первый найденный узел.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать функцию, которая принимает массив объектов типа Node и возвращает элемент с минимальным значением, либо nil, если массив пуст.

public static func findMin(in nodes: [Node]) -> Node? {
    
}

Ответ

Пройдите массив один раз, сохраняя узел с минимальным значением. Пустой массив возвращает nil; при равенстве можно оставить первый найденный узел.

Если сравниваемое свойство Node называется value, реализация такова:

public static func findMin(in nodes: [Node]) -> Node? {
    guard var best = nodes.first else { return nil }
    for node in nodes.dropFirst() {
        if node.value < best.value { best = node }
    }
    return best
}

Определение Node отсутствует, поэтому имя и тип свойства — явно оговорённое предположение; замените его реальным полем или передайте компаратор. Сложность O(n) по времени и O(1) по дополнительной памяти. Возвращается исходный элемент, а не копия его объекта.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее