Мини-урок · перед практикой

Переставить min и max

Находим позиции минимального и максимального значений, затем обмениваем элементы.

Как к ней подойти

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

Коротко о теме

Список хранит элементы в определённом порядке. Прежде чем менять его, решите, нужны ли исходные индексы и можно ли пройти по данным один раз. При удалении элементов будьте внимательны: индексы сдвигаются.

Ключевая идея · Один проход по индексам

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

Проверьте перед запуском

  • Нужно поменять элементы, а не весь порядок списка.
  • Один элемент одновременно является минимумом и максимумом.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Один проход по индексам

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

a = list(map(int, input().split()))
lo = hi = 0
for i in range(1, len(a)):
    if a[i] < a[lo]:
        lo = i
    if a[i] > a[hi]:
        hi = i
a[lo], a[hi] = a[hi], a[lo]
print(*a)

Время: O(n). Память: O(n), включая входные данные.

Другой способ: Встроенные функции

min/max находят значения, index — их позиции. Проходов больше, но общая сложность остаётся линейной.

a = list(map(int, input().split()))
lo = a.index(min(a))
hi = a.index(max(a))
a[lo], a[hi] = a[hi], a[lo]
print(*a)

Время: O(n). Память: O(n), включая входные данные.