我正在解决一个Java问题,其中我需要找到2个整数数组的最大成对乘积。
示例:
array 1 -> [1, 3, -5]
array 2 -> [-2, 4, 1]
output: 23 // (3 * 4) + (1 * 1) + (-5 * -2)
我的当前代码也产生了这个输出。
我的解决方案
对两个数组进行排序,然后将相同索引处的数字相乘并将每对数的乘积相加。
问题
我的解决方案是使用我不知道的测试用例进行测试的。我的解决方案不能通过所有的测试用例。我不确定是否有任何输入会使我的解决方案失败。
问题
我的解决方案中是否存在问题,导致我的代码无法通过所有的测试用例?
代码
private static long maxSum(int[] a, int[] b) {
long result = 0;
Arrays.sort(a);
Arrays.sort(b);
for (int i = a.length - 1; i >= 0; i--) {
result += a[i] * b[i];
}
return result;
}
问题描述
(图片显示了一个网站登录界面,要求输入用户名和密码)
if (a == null || b == null) return 0;
并告诉我们结果是否有所改变? 也许这是一些边缘情况,导致你的代码运行时出现了NullPointerException? - Yaron Grushka