Maximum Product of Three Numbers

这题其实非常简单,开始石乐志,一个数组的三元组最大乘积只有两种情况可能凑成,第一种,全负全正数组就是前三大的值相乘即可,第二种,正负混合数组则是有可能最小两个数与最大数的乘积比前三大的数的乘积还要大,所以最简单的策略就是排序然后找这两种组合就好,时间O(nlgn)

class Solution(object):
    def maximumProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        f = lambda x, y : x * y
        return max(reduce(f, nums[-3:]), reduce(f, nums[:2] + nums[-1:]))

如果用直接把可能凑成最大积的五个数找出来也是可以的,时间O(n),逻辑稍微复杂一点

results matching ""

    No results matching ""