要求:10個(gè)任意整數(shù)(可以包含 0 或者負(fù)數(shù))
思路
/**數(shù)組排序算不寫,手動(dòng)排序 999999 異常碼
*
*
*
* 負(fù)數(shù)個(gè)數(shù)不超過2個(gè),取最大到三個(gè)正整數(shù)成績
*
* 負(fù)數(shù)個(gè)數(shù)超過2個(gè),不超過6個(gè),比較
* 最大到三個(gè)正整數(shù)成績,和1個(gè)正整數(shù)和2個(gè)負(fù)整數(shù)到乘積。
*
* 當(dāng)負(fù)數(shù)個(gè)數(shù)是7個(gè),判斷是否包含0
*
*9個(gè)以上是負(fù)數(shù),取最大三個(gè)負(fù)數(shù)成績。另一個(gè)是0,結(jié)果是取0和任意2個(gè)數(shù)
* 如果不是0,則取三個(gè)最大負(fù)整數(shù)乘績。因?yàn)?在第一位
* 所以直接是 最大 和倒數(shù)1和2位乘積
*
* 10個(gè)負(fù)數(shù)直接最大當(dāng)3個(gè)負(fù)數(shù)乘積
*/
public static int getMul(int [] arr){
//負(fù)數(shù)個(gè)數(shù)不超過2個(gè),取最大到三個(gè)正整數(shù)成績
if(getCount(arr)<=1){
return getMultiplication(arr[9],arr[8],arr[7]);
}
//負(fù)數(shù)個(gè)數(shù)超過2個(gè),不超過6個(gè),比較
//最大到三個(gè)正整數(shù)成績,和1個(gè)正整數(shù)和2個(gè)負(fù)整數(shù)到乘積。
if(getCount(arr)>1&&getCount(arr)<7){
int x= getMultiplication(arr[9],arr[8],arr[7]);
int y=getMultiplication(arr[9],arr[1],arr[0]);
return x>y?x:y;
}
//負(fù)數(shù)個(gè)數(shù)是7個(gè)當(dāng)時(shí)候,需要判斷是否包含0,包含0,
if(getCount(arr)==7){
if(isContaintX(arr,0)){
return 0;
} else {
int x= getMultiplication(arr[9],arr[8],arr[7]);
int y=getMultiplication(arr[9],arr[1],arr[0]);
return x>y?x:y;
}
}
//負(fù)數(shù)個(gè)數(shù)是8個(gè)當(dāng)時(shí)候,需要判斷是否包含
if(getCount(arr)==8){
return getMultiplication(arr[9],arr[1],arr[0]);
}
//負(fù)數(shù)個(gè)數(shù)是9個(gè)當(dāng)時(shí)候,
if(getCount(arr)>=9){
return getMultiplication(arr[9],arr[0],arr[1]);
}
//負(fù)數(shù)個(gè)數(shù)是10個(gè)當(dāng)時(shí)候,
if(getCount(arr)==10){
return getMultiplication(arr[9],arr[8],arr[7]);
}
return 99999;
}
//求負(fù)數(shù)個(gè)數(shù)
public static int getCount(int [] arr){
if(arr == null) return 0;
int count = 0;
for(int i = 0 ; i < arr.length; i++){
if(arr[i] < 0) count++;
}
return count;
}
//判斷是否包含0
public static boolean isContaintX(int [] arr,int x){
boolean result=false;
if(arr == null) return result;
int count = 0;
for(int i = 0 ; i < arr.length; i++){
if(arr[i] ==x){
result=true;
return result ;
}
}
return result ;
}
//求三個(gè)數(shù)乘積
public static int getMultiplication(int x,int y ,int z){
return x*y*z;
}
}