我編寫了獲取最大成對乘積的方法,但是當(dāng)我使用輸入 100000 和 90000 測試方法時,我無法獲得長值。我得到結(jié)果 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));}
1 回答

德瑪西亞99
TA貢獻(xiàn)1770條經(jīng)驗 獲得超3個贊
在這里你只是投射結(jié)果
long res = (long)(numbers[index1] * numbers[index2]);
所以它會在進(jìn)行乘法時溢出整數(shù)
long res = ((long)numbers[index1] * numbers[index2]);
添加回答
舉報
0/150
提交
取消