Переставить 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), включая входные данные.
На что обратить внимание
- Нужно поменять элементы, а не весь порядок списка.
- Один элемент одновременно является минимумом и максимумом.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.