如何不使用list和max()min()获得第二大数

2024-10-04 05:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找到第二大数字,比如这个话题。Get the second largest number in a list in linear time

我的问题是这个限制词list[]removedelminmaxdict{}sortpop。你知道吗

我不知道要得到第二大的数字。那么,我想有人推荐我。你知道吗

谢谢!你知道吗


Tags: theinnumbergettime数字minremove
3条回答
first_max=arr[0]
second_max=first_max
if(arr[0]>arr[1]):
    first_max=arr[0]
    second_max=arr[1]
for i in range(1,len(arr)):
    if(arr[i]>first_max):
       second_max=first_max
       first_max=arr[i]
    elif(arr[i]>second_max):
       second_max=arr[i]

print(second_max)

我认为上述代码将适用于所有情况。。。试着告诉我。你知道吗

试试这个->

a = [1,5,7,8,3,4,6,8,2,9]
x=-999999999999
n=999999999999
for i in a:
    if i>x:
        x=i
for i in a:
    if x-i!=0 and x-i<n:
        n=x-i
        ans=i
print ans

我不确定我是否正确理解了你的问题,但是你提到的post已经给了你一些好的解决方案。例如,如果您不想自己编写算法,请使用标准库heapq,如下所示:

import random
import heapq

random.seed(1)
el = [random.randint(1, 100) for i in range(20)]
print el
first_max, second_max = heapq.nlargest(2, el)
print "Max element is {0} and the second max {1}".format(first_max,
second_max)

相关问题 更多 >