Top.Mail.Ru

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

10. Поиск наибольшего четного и нечетного чисел в списке

Дан список:

a= [1,2,3,4,5,6,7,8,9,0]

 

Способ №1. Использование генератора списка и функции max():

mx1 = max([x for x in a if x%2==0])
mx2 =
max([x for x in a if x%2!=0])
print("max четное", mx1)
print("max нечетное", mx2)

# max четное 8
# max нечетное 9

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

 

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


mx1 = max(list(filter(lambda x: x %2 == 0, a)))
mx2 = max(list(filter(lambda x: x %2 != 0, a)))
print("max четное", mx1)
print("max нечетное", mx2)

# max четное 8
# max нечетное 9

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

 

Способ №3 использование функции enumerate()

mx1 = max([x for i, x in enumerate(a) if x%2==0])
mx2 =
max([x for i, x in enumerate(a) if x%2!=0])
print("max четное", mx1)
print("max нечетное", mx2)

# max четное 8
# max нечетное 9

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

  

Способ 4. Использование цикла for

mx1 = a[0]
mx2 = a[
0]
for x in a:
  
if x % 2 == 0 and x > mx1:
       mx1 = x
  
elif x % 2 != 0 and x > mx2:
       mx2 = x
print("max четное", mx1)
print("max нечетное", mx2)

# max четное 8
# max нечетное 9

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