Приветствую
Первая часть вопроса
Пока не получается осмыслить как правильно решить задачу:
Дан массив. Найдите два соседних элемента, сумма которых максимальна.
Я попытался решить эту задачу. Вроде получилось, но хочется получить понимание того, как именно ее правильно решить, какие варианты будут оптимальные, а самое главное почему. У меня получилось три варианта, но кажется, что имееются варианты решения получше.
# первый вариант
lst0 = [random.randrange(1, 10) for x in range(5)]
print(lst0)
max_lst = 0
for x in range(len(lst0) - 1):
x = lst0[x] + lst0[x + 1]
if x > max_lst:
max_lst = x
print(max_lst, end='\n\n\n')
# второй вариант
lst1 = [random.randrange(1, 10) for x in range(5)]
print(lst1)
lst1 = [lst1[x] + lst1[x + 1] for x in range(len(lst1) - 1)]
print(max(lst1), end='\n\n\n')
# третий вариант
lst2 = [random.randrange(1, 10) for x in range(5)]
print(lst2)
lst2 = [lst2[x] + lst2[x + 1] for x in range(len(lst2) - 1)]
lst2.sort()
print(lst2[-1])
Какой из этих или других вариантов решения задачи выбрать и почему?
Вторая часть вопроса
Во время решения захотелось получить два соседних элемента, сумма которых минимальна и, если на примере второго и третьего вариантов мне понятно как решить задачу по нахождению минимальной суммы двух подряд идущих элементов, то на примере первого варианта нет. По алгоритму первого варианта для нахождения максимальной суммы двух подряд идущих элементов я использую сравнение if x > max_lst, но как поступить в случае с нахождением минимальной суммы, с чем сравнивать мне непонятно.