首页 > 解决方案 > 用指针找到第二大数的问题

问题描述

我做了一个方法,试图在一个未排序的带有指针的整数列表中找到第二大数字。当我传递任何在最大数字之前并排放置第二大数字的整数列表时,我没有得到预期的结果。例如,当我通过时[2, 6, 6, 2, 11],我得到输出:

Largest: 11
Second Largest: 2 

由于这一行6, the 永远不会分配给:second_max

elif j > second_max and first_max != j:

如果我删除第二个条件,该方法可能会将重复项分配给first_max并且second_max不输出实际的第二大数字。

first_max=float('-inf')
second_max=float('-inf')

for i,j in enumerate(nums):
    if j > first_max:
        first_max=j
    elif j > second_max and first_max != j:
        second_max=j 

if first_max == float('-inf'):
    first_max,second_max=None,None

elif second_max == float('-inf'):
    second_max=None

print("Largest: {}".format(first_max))
print("Second Largest: {}".format(second_max))

将不胜感激任何帮助。

编辑:我知道有一个类似的帖子,但它没有回答我处理重复的问题。我希望该方法仅将重复项评估为一个数字。

此 [5,5,4,2] 和 [2, 6, 6, 2, 11] 作为输入的输出应分别为:

最大:5 第二大:4

最大:11 第二大:6

标签: python

解决方案


当您找到新的 first_max 时,旧的 first_max 应该成为 second_max,正如 @Thierry 所暗示的那样。


推荐阅读