代码实现:
public class MaxProduct {
public static void main(String[] args) {
System.out.println(getMaxValue(new int[]{1,2,3,4,5,6}));
}
//不排除数组中有负数的可能,所以要先找两个最小的和三个最大的数
private static int getMaxValue(int[] arr) {
//定义一个最小和一个次小的的变量
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
//定义三个最大的变量
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE,max3 = Integer.MIN_VALUE;
for (int num : arr) {
//如果小于最小的值
if (num < min1){
min2 = min1;
min1 = num;
}else if (num < min2){ //如果小于次小值则赋给min2
min2 = num;
}
//原理同上
if (num > max1){
max3 = max2;
max2 = max1;
max1 = num;
}else if (num > max2){
max3 = max2;
max2 = num;
}else if (num > max3){
max3 = num;
}
}
//返回最小两个和最大的乘积 && 最大三个做比较
return Math.max(min1 * min2 * max1,max1 * max2 *max3);
}
}