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

三个数的最大乘积

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)
全部评论

相关推荐

牛客鼠:校友你这简历基本无敌了,春招刷刷题去冲大厂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务