java查找数组中3个数字的最小乘积[代码错误?]
我正试图编写一个代码来实现这一点,但我并没有在我发布的网站上完成所有测试用例。由于我不知道这些测试是什么,我试着自己运行一些,但我找不到问题
现在,我知道我的代码可以简化,但为了清晰起见,我把它做得更大了。我是个笨蛋,别恨我
例如:
对于arr=[1,2,3],输出应该是smallestProduct(arr)=6
唯一的选项是1*2*3=6
对于arr=[-1,0,-2,3],输出应该是smallestProduct(arr)=0 有四种可能的产品,最小的是0:
编辑:我用以下方法解决挑战: EDIT2:是的,我错过了0。该死
Arays.sort(arr);
return Math.min(arr[0] * arr[1] * arr[2], arr[0] * arr[arr.length-1] * arr[arr.length-2] );
但我想知道ifs和elses到底怎么了
public static int smallestProduct(int[] arr) {
Arrays.sort(arr);
//all positive
if (arr[0] > 0) {
return arr[0] * arr[1] * arr[2];
}
//all negative
else if (arr[arr.length-1] < 0){
return arr[0] * arr[1] * arr[2];
}
//one is negative
else if (arr[0] < 0 && arr[1] > 0) {
return arr[0] * arr[arr.length-1] * arr[arr.length-2];
}
//two negative
else if (arr[0] < 0 && arr[1] < 0 && arr[2] > 0) {
return arr[0] * arr[arr.length-1] * arr[arr.length-2];
}
//more than two negative
else {
return arr[0] * arr[1] * arr[2];
}
共 (0) 个答案