Workshop Hub

Рассматриваем задачу: максимум и минимум списка

В этом материале мы спокойно и по шагам разберём учебную задачу на программирование.

Задача

Найти максимальный и минимальный элементы списка за один проход.

Решение


def min_max(arr: list[int]) -> tuple[int, int]:
    lo = hi = arr[0]
    for x in arr[1:]:
        if x < lo:
            lo = x
        elif x > hi:
            hi = x
    return lo, hi


print(min_max([4, 7, 1, 9, 3]))

Как это работает

Один проход по списку: каждое число сравнивается с текущими минимумом и максимумом. Это вдвое быстрее двух отдельных проходов.

Пример работы


(1, 9)

Сложность

O(n) по времени, O(1) по памяти.

Такой пример хорошо закрепляется практикой — перепишите решение руками и прогоните на своих тестах.