一、题目
题目描述
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
输入描述:
无序整数数组A[n]输出描述:
满足条件的最大乘积示例1
输入
3 4 1 2输出
24
二、代码实现
先简单分析一下:要想找到三个数的乘积最大,首先需要给列表排个序,乘积最大的只有两个可能:一种是最大的整数和两个最小的负数相乘,要么是最大的三个数相乘,所以只需比较两者的大小,代码如下:
b = input() a = [int(x) for x in input().split(' ')] a.sort(reverse=True) if len(a)>=3: m = a[0] * a[1] * a[2] n = a[0] * a[-1] * a[-2] if m < n: print(n) else: print(m)