Top.Mail.Ru

Перечень алгоритмов

8. Первый и последний максимальный/минимальный элемент

 

Способ 1. Использование цикла for и функции range()


 #   0  1   2   3  4   5   6   7     <-
индексы
a= [16, 19, 20, 1, 20, 18, 20, 18# <- список
mx = a[0]
imx1 =
0
imx2 = 0
for i in range(1,len(a)):
   
if a[i] > mx:        это первый максимум     20 2
       
mx = a[i]
        imx1 = i
   
elif a[i] == mx:     # это последний максимум  20 6
       
imx2 = i
print (mx, imx1, imx2)       #  20 2  или 20 6
# 20 2 6

Временная сложность: O(n),

 

Способ 2. Использование функции max() и срезов


# Первый максимум      20 2
print(max(a), a.index(max(a)))      
# Последний максимум   20 6
print(max(a), len(a)- 1 - a[::-1].index(max(a) ))

# 20 2

# 20 6

Временная сложность: O (1)