题目描述
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,
使得乘积最大。
输入描述:
无序整数数组A[n]
输出描述:
满足条件的最大乘积
示例1:
输入:
3 4 1 2
输出:
24
代码
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
char []arr = s.toCharArray();
int []brr = new int[arr.length];
if (brr.length<4){
System.out.println("数据不足");
return;
}
for (int i = 0;i<arr.length;i++){
brr[i] = arr[i]-'0';
}
Arrays.sort(brr);
int []crr = new int[arr.length];
int count = 0;
for(int i = 0;i<arr.length;i++){
if (brr[i]<0){
crr[count] = brr[i];
}
}
if (count<2){//负数不足两个
System.out.println(brr[brr.length-1]*brr[brr.length-2]*brr[brr.length-3]);
}else {
if (crr[0]*crr[1]<brr[brr.length-1]*brr[brr.length-2]){
System.out.println(brr[brr.length-1]*brr[brr.length-2]*brr[brr.length-3]);
}else {
System.out.println(crr[0]*crr[1]*brr[brr.length-1]);
}
}
}
}