欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【leetcode】三个数的最大乘积

程序员文章站 2024-03-16 17:53:46
...

三个数的最大乘积

问题描述:

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

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】三个数的最大乘积
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】三个数的最大乘积