Leetcode - 628 Maximum Product of Three Numbers (Easy)
题目描述:给定一个数组,找出三个数的最大乘积。
Input: [1,2,3,4]
Output: 24
解题思路:三个数的最大乘积有两种情况,第一种是三个最大正数相乘,第二种是两个最小的负数与一个最大正数相乘,这就转变为如何找到这 5 个数。
public int maximumProduct(int[] nums) {
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
for (int num : nums) {
if (num > max1) {
max3 = max2;
max2 = max1;
max1 = num;
} else if (num > max2) {
max3 = max2;
max2 = num;
} else if (num > max3) {
max3 = num;
}
if (num < min1) {
min2 = min1;
min1 = num;
} else if (num <min2) {
min2 = num;
}
}
return Math.max(max1 * max2 * max3, max1 * min1 * min2);
}