Форум сайта python.su
Найдите наибольшее значение в списке и индекс последнего элемента, который имеет данное значение за один проход по списку, не модифицируя этот список и не используя дополнительного списка.
Выведите два значения.
Тест 1
Входные данные:
1 2 1 2 1
Вывод программы:
2 3
Тест 2
Входные данные:
1 2 3 4 5
Вывод программы:
5 4
Тест 3
Входные данные:
5 4 3 2 1
Вывод программы:
5 0
aList = input().split() n = max(aList) if int(n) >= 0: print(n, len(aList) - aList[::-1].index(n) - 1) else: n = min(aList) print(n, len(aList) - aList[::-1].index(n) - 1)
Офлайн
Надо сделать две переменные - <значение максимального> и <последний индекс максимального> - и перебирать элементы списка по очереди, обновляя эти переменные, если это нужно. К концу перебора элементов списка эти переменные будут заполнены правильными значениями.
LanaBondОн вообще неправильный. Метод .index() - это дополнительный проход по списку. Срез создаёт новый список, выделяя для него место в памяти. И вычисление длины списка тоже может делать дополнительный проход, если размер списка не хранится внутри списка (а это может быть в какой-нибудь реализации питона).
Код не проходит последние 2 теста
Отредактировано py.user.next (Окт. 24, 2017 15:45:04)
Офлайн
LanaBondначнем понимать
не могу понять в чем ошибка
>>> a = ['223','586','1322','9'] >>> print(min(a)) 1322 >>> print(max(a)) 9
a = list(map(int,input().split())) index = 0 value = a[0] for ind, val in enumerate(a): if val > value or val == value: index, value = ind, val print(value,index)
Офлайн
marvellikБольшое спасибо! Вы мне очень помогли.
Офлайн