题解 | #三个数的最大乘积#

三个数的最大乘积

http://www.nowcoder.com/practice/8ae05c2913fe438b8b14f3968f64fc0b

线性扫描保存最大的三个和最小的两个数

  1. 均为正数时,最大的三个数相乘为最大
  2. 当含有两个最大负数时,再乘以最大正数为最大乘积
class Solution:
    def solve(self, A):
        # write code here
        max1 = max2 = max3 = float('-inf')
        min1 = min2 = float('inf')
        for n in A:
            if n >= max1:
                max2, max3 = max1, max2
                max1 = n
            elif n >= max2:
                max3, max2 = max2, n
            elif n > max3:
                max3 = n
            if n <= min1:
                min1, min2 = n, min1
            elif n < min2:
                min2 = n
        return max(min1 * min2 * max1, max1 * max2 * max3)
全部评论

相关推荐

10-25 22:20
门头沟学院 Java
代码飞升:同学院本,个人亮点去了,打招呼里面的废话也去了,学院本就是路边一条,明天拉满然后该学还是学,小厂也行尽量先有一段实习。另外你的项目描述写的不好,具体列一下可被提问的点,然后量化一下指标或者收益吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务