[leetcode] problem 628 – maximum product of three numbers

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

  1. The length of the given array will be in range [3,10^4] and all elements are in the range [-1000, 1000].
  2. 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);
}