Типичные ошибки при решении: максимум и минимум списка
Разберём решение и подводные камни — их обычно не видно в готовом коде из учебника.
Задача
Найти максимальный и минимальный элементы списка за один проход.
Решение
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) по памяти.
Частые ошибки
1. Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается. 2. Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов. 3. Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Заметив такую ошибку в чужом коде, вы уже мыслите как ревьюер.