牛客网刷题记录:
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
无序整数数组A[n]
满足条件的最大乘积
示例1
复制
3 4 1 2
复制
24
解决方案:
import sys def maxMatible(l): j = 0 if l == None or len(l) < 3: return None for i in range(len(l)): if l[i] > 0: j += 1 if j == 1: a = sorted(l, reverse=True) b = a[0] * a[-1] * a[-2] return str(b) else: a = sorted(l, reverse=True) b = a[0] * a[1] * a[2] return str(b) line = sys.stdin.readline() line = line.strip().split() l = [] for i in line: l.append(int(i)) print(maxMatible(l))
注:不知道为什么测试通不过,有哪位大佬可以解释下