题解 | #三个数的最大乘积#
三个数的最大乘积
http://www.nowcoder.com/practice/8ae05c2913fe438b8b14f3968f64fc0b
import java.util.*;
public class Solution {
public long solve (int[] A) {
// 由于时间复杂度有限制不能排序,需要手动记录最值
// 第一种情况:三个正数相乘
// 第二种情况:一个正数,两个负数
// 第三种情况:三个负数
// 所以需要记录三个正数,三个负数
int positive_first=0,positive_second=0,positive_third=0;
int negative_first=0,negative_second=0,negative_third=0;
for (int i=0;i<A.length;i++){
if (A[i]>0){
if (A[i]>=positive_first){
positive_third=positive_second;
positive_second=positive_first;
positive_first=A[i];
}else if(A[i]>=positive_second){
positive_third=positive_second;
positive_second=A[i];
}else if(A[i]>=positive_third){
positive_third=A[i];
}
}else if(A[i]<0){
if(A[i]<=negative_first){
negative_third=negative_second;
negative_second=negative_first;
negative_first=A[i];
}else if(A[i]<=negative_second){
negative_third=negative_second;
negative_second=A[i];
}else if(A[i]<=negative_third){
negative_third=A[i];
}
}
}
long max = Math.max(positive_second*positive_third,negative_first*negative_second);
if (A[0]==-10000) return -1000000000000L;
max*=positive_first;
return max;
}
}