Skip to main content

Command Palette

Search for a command to run...

Solving and testing minimum and maximum of a list

Updated
•2 min read•View as Markdown

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

Задача

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

Решение

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) по памяти.

Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

Читайте также:

проход · минимумом · привычка · удобны · сравнивается · тестов · фреймворков · вызова · число · return · Хорошая · Пример · Тесты · проверка · проверять · учебных · каждое · Найти · [tupleint · сразу · [arr1 · короткие

More from this blog

N

News

745 posts