Given an integer array, find three numbers whose product is maximum and output the maximum product.
Example
No.1
Input: [1,2,3]
Output: 6
No.2
Input: [1,2,3,4]
Output: 24
Note
The length of the given array will be in range [3,10^4] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won’t exceed the range of 32-bit signed integer.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
public int (int [] nums) { int max1 = Integer.MIN_VALUE; int max2 = Integer.MIN_VALUE; int max3 = Integer.MIN_VALUE; int min1 = Integer.MAX_VALUE; int 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(min1 * min2 * max1, max1 * max2 * max3); }
近期评论