给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
3 <= nums.length <= 104
-1000 <= nums[i] <= 1000
思路:有两种情况:
三个数全为负数或者全为正数,最大的积为最大的三个数相乘
有两个负数一个正数,最大积为最小的两个数和最大的一个数
这两种情况的值最后在比大小
class Solution {
public int maximumProduct(int[] nums) {
int max1=-1000,max2=-1000,max3=-1000;
int min1=1000,min2=1000;
for(int i=0;i<nums.length;i++){
//最大的三个数
if(nums[i]>max1){
max3=max2;
max2=max1;
max1=nums[i];
}else if(nums[i]>max2){
max3=max2;
max2=nums[i];
}else if(nums[i]>max3){
max3=nums[i];
}
//找出最小的两个数
if(nums[i]<min1){
min2=min1;
min1=nums[i];
}else if(nums[i]<min2){
min2=nums[i];
}
}
return Math.max(min1*min2*max1,max1*max2*max3);
}
}
