Медленный разбор помогает понять код, а не просто скопировать его.
Задача
Найти максимальный и минимальный элементы списка за один проход.
Решение
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. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными. 2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации. 3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.
Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.
---
Related:
- Шаг за шагом: бинарный поиск - cincinbear leaks - Writing tests for fast exponentiation - Типичные ошибки при решении: переворот строки - гравити фолз одно лето удовольствий 4 - Несколько вариантов решения: быстрая сортировка - Медленно и подробно: среднее значение списка - rara anza - tbfe the lair episode 1 - Осваиваем задачу: переворот строки - 埃及猫摇 - mimi typh - Типичные ошибки при решении: наибольший общий делитель - Ловушки новичков при решении: подсчёт частот слов - Решаем и тестируем: удаление дубликатов из списка - 진자림 deepfake - avtube - Peachy Alice – Free Pics, Galleries, Videos & More - 明星去衣 - 明星去衣 - Типичные ошибки при решении: вычисление факториала - Рассматриваем задачу: вычисление факториала - Fluffy House Boots: Cozy Women's Slippers for Warm Winter Comfort - 绮罗罗香织 - avop-137
Kommentit