public int maximumProduct(int[] nums) {
if (nums.length < 3)
return 0;
// 开始
int min1 = Integer.MAX_VALUE;
int min2 = Integer.MAX_VALUE;
int max1 = Integer.MIN_VALUE;
int max2 = Integer.MIN_VALUE;
int max3 = Integer.MIN_VALUE;
for (int i = 0; i < nums.length; i++) {
if (nums[i] < min2) {
if (nums[i] >= min1)
min2 = nums[i];
else {
min2 = min1;
min1 = nums[i];
}
}
if (nums[i] > max3) {
if (nums[i] <= max2) {
max3 = nums[i];
} else if (nums[i] <= max1) {
max3 = max2;
max2 = nums[i];
} else {
max3 = max2;
max2 = max1;
max1 = nums[i];
}
}
}
// 结束
int a = max1 * max2 * max3;
int b = min1 * min2 * max1;
return Math.max(a, b);
}