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])
这篇关于查找列表中的第二大元素(对于重复元素)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:查找列表中的第二大元素(对于重复元素)
基础教程推荐
猜你喜欢
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01