首页 > 其他 > 详细

628. Maximum Product of Three Numbers

时间:2020-07-15 22:32:11      阅读:53      评论:0      收藏:0      [点我收藏+]

Given an integer array, find three numbers whose product is maximum and output the maximum product.

给一个数组,找出三个数,使得他们的乘积最大。

分类讨论 max1 max2 max3 min1 min2

1.max有3个正数 ans = max1*max2*max3

2.max有2个正数 ans = max1 * min1 * min2

3.max有1个正数 ans = max1 * min1 * min2

4.max全是负数 ans = max1 * min1 * min2

所以答案就是max(max1 * max2 * max3, max1 * min1 * min2)

class Solution(object):
    def maximumProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        min1 = float(inf)
        min2 = float(inf)
        max1 = float(-inf)
        max2 = float(-inf)
        max3 = float(-inf)
        
        for value in nums:
            if value <= min1:
                min2 = min1
                min1 = value
            elif value <= min2:
                min2 = value
            
            if value >= max1:
                max3 = max2
                max2 = max1
                max1 = value
            elif value >= max2:
                max3 = max2
                max2 = value
            elif value >= max3:
                max3 = value
        
        return max(min1 * min2 * max1, max1 * max2 * max3)

 

628. Maximum Product of Three Numbers

原文:https://www.cnblogs.com/whatyouthink/p/13308102.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!