猿问

最大成对乘积 Java

我编写了获取最大成对乘积的方法,但是当我使用输入 100000 和 90000 测试方法时,我无法获得长值。我得到结果 410065408。


static long getMaxPairwiseProduct(int[] numbers) {


      int index1 = 0;


      for (int i = 1; i < numbers.length; i++) {

        if (numbers[index1] < numbers[i])

            index1 = i;

    }


      int index2;


      if (index1 == 0){

          index2 = 1;

      }else {

          index2 = 0;

      }


      for (int i = 0; i < numbers.length; i++) {

        if(numbers[i]!=numbers[index1] && numbers[index2]<numbers[i]){

            index2 = i;

        }

    }

      long res = (long)(numbers[index1] * numbers[index2]);


      return res;

}

public static void main(String[] args) {

    int[] numbers = new int[2];

    numbers[0] = 100000;

    numbers[1] = 90000;

    System.out.println(getMaxPairwiseProduct(numbers));


}


慕哥6287543
浏览 180回答 1
1回答

德玛西亚99

在这里你只是投射结果long&nbsp;res&nbsp;=&nbsp;(long)(numbers[index1]&nbsp;*&nbsp;numbers[index2]);所以它会在进行乘法时溢出整数long&nbsp;res&nbsp;=&nbsp;((long)numbers[index1]&nbsp;*&nbsp;numbers[index2]);
随时随地看视频慕课网APP

相关分类

Java
我要回答