Finding the second largest element in a list (for duplicate elements)(查找列表中的第二大元素(对于重复元素))
本文介绍了查找列表中的第二大元素(对于重复元素)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试查找数组中的第二大元素。我的代码对大多数输入都有效,但对于某些输入,它却失败了。
另外,如果我输入[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)
请谁来解释一下背后的逻辑。
推荐答案
问题在于您在此处编写的第一个和第二个最大值的初始化
if arr[0] >= arr[1]:
first_max = arr[0]
second_max = arr[1]
else:
first_max = arr[1]
second_max = arr[0]
在[6,6,6,6,6,6,6,6,6,5]
的情况下,first_max和Second_max都等于6,并且在被指定为5时无法更改,因为第二个max仍然大于5。
解决方案是编辑这部分代码
之前
elif arr[i] > second_max and arr[i] != first_max:
second_max = arr[i]
之后
elif first_max == second_max or (arr[i] > second_max and arr[i] != first_max:
second_max = arr[i])
这篇关于查找列表中的第二大元素(对于重复元素)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:查找列表中的第二大元素(对于重复元素)
猜你喜欢
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01