Загружаю тестовый файл
This commit is contained in:
parent
9c692ab7f3
commit
5c2a4d9be5
|
@ -0,0 +1,60 @@
|
|||
def find_second_max(array):
|
||||
# Проверяем входные данные
|
||||
if array and len(array) > 0:
|
||||
# Максимальное значение - первое значение
|
||||
my_max = array[0]
|
||||
# Второе по величине число пока не найдено
|
||||
my_second_max = None
|
||||
|
||||
# Проходим все элементы массива
|
||||
for i in array:
|
||||
# Если текущий элемент массива больше максимального
|
||||
if i > my_max:
|
||||
# Бывшее до сих пор максимальное значение - становится вторым по величине
|
||||
my_second_max = my_max
|
||||
# Текущий элемент становится максимальным значением
|
||||
my_max = i
|
||||
# Если текущий элемент массива меньше максималььного
|
||||
elif i < my_max:
|
||||
# Если второе по величине значение еще не найдено
|
||||
if my_second_max is None:
|
||||
# Текущий элемент становится вторым по величине значением
|
||||
my_second_max = i
|
||||
# Если второе по величине значение уже определено
|
||||
else:
|
||||
# Если текущий элемент больше текущего второго по величине значения
|
||||
if i > my_second_max:
|
||||
# Текущий элемент становится вторым по величине значением
|
||||
my_second_max = i
|
||||
|
||||
# Вариант когда текущий элемент равен минимальному значению, мы не рассматриваем,
|
||||
# т.к. он никак не влияет на найденные значения
|
||||
|
||||
return my_second_max
|
||||
|
||||
# Если массив пустой или вообще не имеет значения
|
||||
return None
|
||||
|
||||
|
||||
#################################################
|
||||
def verifier(test_name, actual, expected):
|
||||
print(test_name)
|
||||
if actual != expected:
|
||||
print("=======> FAILED! <=======")
|
||||
print(f"Got value <{actual}>")
|
||||
print(f"Expected value is <{expected}>")
|
||||
else:
|
||||
print("PASSED")
|
||||
print()
|
||||
|
||||
|
||||
second_max_tests = [([1, 6, 3, 6, 54, 3, 6, 3, 1, 2, 8], 8),
|
||||
([2, 2, 2, 2, 2, 2, 2, 2, 2], None),
|
||||
([2, 2, 2, 2, 2, 2, 2, 2, 4], 2),
|
||||
([], None),
|
||||
([1, 0, -1], 0),
|
||||
([4, -7, 6, 23, -5, 23, -4, 5, 7, 100], 23)]
|
||||
|
||||
for i in range(len(second_max_tests)):
|
||||
verifier(f"Second max test {i+1}", find_second_max(second_max_tests[i][0]), second_max_tests[i][1])
|
||||
|
Loading…
Reference in New Issue