最大乘积
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())
以上是关于最大乘积的主要内容,如果未能解决你的问题,请参考以下文章
[程序员代码面试指南]数组和矩阵问题-数组中子数组的最大累乘积
华为OD机试 - 计算最大乘积(Java) | 机试题+算法思路+考点+代码解析 2023
华为OD机试 - 计算最大乘积(Java) | 机试题+算法思路+考点+代码解析 2023