最大乘积

Posted bernieloveslife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大乘积相关的知识,希望对你有一定的参考价值。

给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

def solve():
    n = input()
    a = input().split()
    for i in range(len(a)):
        a[i] = int(a[i])
    m1,m2,p1,p2,p3 = 0,0,0,0,0
    for i in a:
        if i<0:
            if i<m1:
                m2 = m1
                m1 = i
            elif i<m2:
                m2 = i
        elif i==0:
            zero = True
        else:
            if i>p3:
                p1 = p2
                p2 = p3
                p3 = i
            elif i>p2:
                p1 = p2
                p2 = i
            elif i>p1:
                p1 = i
    if p2==0 or p1==0:
        return m1*m2*p3
    # print(m1,m2,p1,p2,p3)
    return max(p1*p2*p3,m1*m2*p3)
 
print(solve())

以上是关于最大乘积的主要内容,如果未能解决你的问题,请参考以下文章

[程序员代码面试指南]数组和矩阵问题-数组中子数组的最大累乘积

最大K乘积问题

华为OD机试 - 计算最大乘积(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试 - 计算最大乘积(Java) | 机试题+算法思路+考点+代码解析 2023

华为OD机试真题Java实现计算最大乘积真题+解题思路+代码(2022&2023)

最大回文乘积