描述
给定一个长度为 的无序数组
正在上传…重新上传 ,包含正数、负数和 0 ,请从中找出 3 个数,使得乘积最大,返回这个乘积。
要求时间复杂度: ,空间复杂度:
数据范围:
3 \le n \le 2 * 10^53≤n≤2∗105
-10^6 \le A[i] \le 10^6−106≤A[i]≤106
示例1
输入:
[3,4,1,2]
复制返回值:
24
复制
1、如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。
2、如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。
3、综上,在给数组排序后,分别求出三个最大正数的乘积,以及两个最小负数与最大正数的乘积&