给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)。
输入描述:
第一行是数组大小n,第二行是无序整数数组A[n]
输出描述:
满足条件的最大乘积
输入例子1:
4
3 4 1 2
输出例子1:
24
思路
- 求得数组所有3项子集
- 再找出子集中最大乘积
没有在牛客上验证过时间和空间复杂度,找时间验证了再更新
代码
from itertools import combinations
from functools import reduce
n = int(input())
a = list(map(int, input().split()))
a_sub = list(combinations(a, 3))
max = 0
for sub in a_sub:
re = reduce(lambda x, y: x * y, sub)
if re > max:
max = re
print(max)
网友评论