Python面试题:求列表当中最大的三个元素

本文介绍了一种在牛客网刷题时遇到的高效算法,用于从列表中找出最大的三个数值。通过逐步迭代和比较,该算法能在较低的时间复杂度下完成任务,适合于处理大规模数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在牛客网https://www.nowcoder.com/上刷题遇到如何从list中取得最大的三个值:自己写的方法复杂度太高,放上大牛的方法,复杂度很低。看了好几遍才体会到大概的精髓。

 

'''
从list中取出最大的三个值
__author__:无名
'''
 
 
def FindList3MaxNum(foo):
    max1, max2, max3 = None, None, None
 
    for num in foo:
        if max1 is None or max1 < num:
            max1, num = num, max1
        if num is None:
            continue
        if max2 is None or num > max2:
            max2, num = num, max2
        if num is None:
            continue
        if max3 is None or num > max3:
            max3 = num
 
    return max1, max2, max3
 
 
if __name__ == '__main__':
    foo = [78, 23, 10, 56, 4, 103, 89, 14]
    max1, max2, max3 = FindList3MaxNum(foo)
    print(max1, max2, max3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值