Я пытаюсь найти второй по величине элемент в массиве. Мой код работает для большинства входов, но для некоторых входов он терпит неудачу.
Также, если я введу [6, 6, 6, 5]
, программа должна вывести 5 как второе по величине, а не 6.
Для [6,6,6,6,6,6,6,6,6,5]
печатается 6 вместо 5.
Для повторяющихся элементов это дает неправильные результаты.
# Given the participants' score sheet for your University Sports Day, you are required to find the runner-up score.
# You are given scores. Store them in a list and find the score of the runner-up.
if __name__ == '__main__':
n = int(input("Enter the total numbers: "))
arr = list(map(int, input("Enter the numbers: ").split()))
if arr[0] >= arr[1]:
first_max = arr[0]
second_max = arr[1]
else:
first_max = arr[1]
second_max = arr[0]
for i in range(2, n):
if arr[i] > first_max:
second_max = first_max
first_max = arr[i]
elif arr[i] > second_max and arr[i] != first_max:
second_max = arr[i]
print(second_max)
Пожалуйста, кто-нибудь, объясните логику, стоящую за этим.