代码1:
方法一
int maxNumber = Integer.MIN_VALUE; // 第一大数
int secondMaxNumber = Integer.MIN_VALUE;// 第二大数
int thirdMaxNumber = Integer.MIN_VALUE; // 第三大数
int firstMinus = Integer.MAX_VALUE; // 最小的负数
int secondMinus = Integer.MAX_VALUE; // 第二小的负数
for(int num : nums){
if(num < firstMinus){
secondMinus = firstMinus;
firstMinus = num;
}else if(num < secondMinus){
secondMinus = num;
}
if(num > maxNumber){
thirdMaxNumber = secondMaxNumber;
secondMaxNumber = maxNumber;
maxNumber = num;
}else if(num > secondMaxNumber){
thirdMaxNumber = secondMaxNumber;
secondMaxNumber = num;
}else if(num > thirdMaxNumber){
thirdMaxNumber = num;
}
}
return Math.max(maxNumber*secondMaxNumber*thirdMaxNumber,firstMinus*secondMinus*maxNumber);
代码1结果:
代码2:(leetcode官方答案)
Arrays.sort(nums);
int n = nums.length;
return Math.max(nums[0]*nums[1]*nums[n-1],nums[n-1]*nums[n-2]*nums[n-3]);
代码2执行结果: