有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案