Найти - Пользователи
Полная версия: Помогите найти ошибук
Начало » Центр помощи » Помогите найти ошибук
1
LanaBond
Найдите наибольшее значение в списке и индекс последнего элемента, который имеет данное значение за один проход по списку, не модифицируя этот список и не используя дополнительного списка.

Выведите два значения.
Тест 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)

Код не проходит последние 2 теста, не могу понять в чем ошибка (данные теста не видны)
py.user.next
Надо сделать две переменные - <значение максимального> и <последний индекс максимального> - и перебирать элементы списка по очереди, обновляя эти переменные, если это нужно. К концу перебора элементов списка эти переменные будут заполнены правильными значениями.

LanaBond
Код не проходит последние 2 теста
Он вообще неправильный. Метод .index() - это дополнительный проход по списку. Срез создаёт новый список, выделяя для него место в памяти. И вычисление длины списка тоже может делать дополнительный проход, если размер списка не хранится внутри списка (а это может быть в какой-нибудь реализации питона).
marvellik
LanaBond
не могу понять в чем ошибка
начнем понимать
aList = input().split() тут вы получаете список СТРОК из цифр (заметьте разницу между строкой и числом)
n = max(aList) находите максимальный (орфографически) элемент благо в списке строки из одной цифры и все прокатит ровно но если у вас будет такой список ( а у вас именно список из строк)
 >>> a = ['223','586','1322','9']
>>> print(min(a))
1322
>>> print(max(a))
9
думаю тут ошибка видна явно
if int(n) >= 0: ну если n не ноль то всегда будет выполнятся это условие ( а 0 в входных данных я не вижу)
print(n, len(aList) - aList.index(n) - 1) тут вообще темный лес я даже не понял что и для чего ну ладно n 'это ваш макс элемент ну для чего len(aList) - aList.index(n) - 1?
 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)
breakz849
marvellik
Большое спасибо! Вы мне очень помогли.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB