给定一个整数数组,找到三个元素,使乘积最大,返回该积。
样例
样例 1:
输入: [1,2,3]
输出: 6
样例 2:
输入: [1,2,3,4]
输出: 24
注意事项
- 数组的长度范围为
[3, 10^4]
,所有的元素范围为[-1000, 1000]
。 - 任意三个元素的积不会超过32位有符号整数的范围。
解题思路:
直接先排序,后找相乘最大。注意这里要考虑负数的情况!!因为三个数相乘最大,有两种情况:+++,+--,而--的两负数必然是最小的负数,它们相乘才可能是最大的正数,所以比较这两种情况的大小,谁大返回谁即可。
public class Solution {
/**
* @param nums: an integer array
* @return: the maximum product
*/
public int maximumProduct(int[] nums) {
// Write your code here
int n = nums.length;
Arrays.sort(nums);
int max1 = nums[n-1];
int max2 = nums[n-2];
int max3 = nums[n-3];
int min1 = nums[0];
int min2 = nums[1];
int res1 = max1*max2*max3;
int res2 = max1*min1*min2;
return Math.max(res1, res2);
}
}