数组的三个数最大乘积

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

示例 1:

输入: [1,2,3]
输出: 6
示例 2:

输入: [1,2,3,4]
输出: 24
注意:

给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

来源:力扣(LeetCode)


假设没有负数的情况下,解是三个最大的数的乘积;若是包含负数,则是最大的两个正数和最小的两个负数比较,绝对值最大的和最大的正数的乘积即是结果。


# -*- coding: utf-8 -*-
#!/usr/bin/env python

"""
Created on Sat Aug  1 22:09:57 2020

@author: WowlNAN

@github: https://github.com/WowlNAN

@blog: https://blog.csdn.net/qq_21264377

"""


class Solution:
    def maximumProduct(self, nums) -> int:
        if len(nums)==3:
            return nums[0]*nums[1]*nums[2]
        a=nums.copy()
        b=max(a)
        a.remove(b)
        c=max(a)
        a.remove(c)
        d=max(a)
        m=[b,c,d]
        a=nums.copy()
        a.remove(b)
        a.remove(c)
        a.remove(d)
        if a!=[]:
            e=min(a)
            a.remove(e)
            m.append(e)
        if a!=[]:
            f=min(a)
            a.remove(f)
            m.append(f)
        if a!=[]:
            g=min(a)
            m.append(g)
        n=[]
        l=len(m)
        for i in range(l-2):
            for j in range(i+1, l-1):
                for k in range(j+1, l):
                    n.append(m[i]*m[j]*m[k])
        return max(n)
    
print(Solution().maximumProduct([1,-5,-4,-3,2,3]))

猜你喜欢

转载自blog.csdn.net/qq_21264377/article/details/107737942