Given an integer array, find three numbers whose product is maximum and output the maximum product.
Example 1:
Input: [1,2,3] Output: 6
Example 2:
Input: [1,2,3,4] Output: 24
Note:
- The length of the given array will be in range [3,104] 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.
public class Solution { public int maximumProduct(int[] nums) { int max = Integer.MIN_VALUE; int max2 = Integer.MIN_VALUE; int max3 = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; int min2 = Integer.MAX_VALUE; for(int i=0;i<nums.length;i++){ if(nums[i]>max){ max3 = max2; max2 = max; max = nums[i]; } else if(nums[i]>max2){ max3 = max2; max2 = nums[i]; } else if(nums[i]>max3){ max3 = nums[i]; } if(nums[i]<min){ min2 = min; min = nums[i]; } else if(nums[i]<min2){ min2 = nums[i]; } } return Math.max(max * max2 * max3,max * min * min2); } }