【leetcode】三个数的最大乘积

三个数的最大乘积

问题描述:

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

1.初步解法

正负分开存放在数组中,空间消耗大

class Solution:
     def maximumProduct(self, nums: List[int]) -> int:
        a=[]
        b=[]
        for i in nums:
            if i>=0:
                a.append(i)
            elif i<0:
                b.append(i)
        if len(a)>0:
            mul =None
            num1=max(a)
            a.remove(num1)
            print(len(a))
            if len(a)>=2:   
                num2=max(a)
                a.remove(num2)
                num3=max(a)
                mul=num1*num2*num3
                print(mul)
                res=mul
            if len(b)>=2:
                    num_1=min(b)
                    b.remove(num_1)
                    num_2=min(b)
                    mul2=num1*num_1*num_2
                    if (not mul==None):
                       res=max(mul,mul2)
                    else:
                        res=mul2
 
        else:
            num_1=min(b)
            b.remove(num_1)
            num_2=min(b)
            b.remove(num_2)
            num_3=min(b)
            b.remove(num_3)
            res=num_3*num_1*num_2  
        return  res  

【leetcode】三个数的最大乘积_第1张图片
2.解法二

排序后最大值只能是最大的三个数相乘或最小的值和最大的两个值相乘

class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums = sorted(nums, reverse=True)
        return max(nums[0]*nums[1]*nums[2],nums[0]*nums[-1]*nums[-2])
          

sort()函数有个reverse参数,可以规定排序的规则。
在这里插入图片描述

你可能感兴趣的:(【leetcode】三个数的最大乘积)