我正在尝试通过编码来应对挑战之一,但是返回的值是错误的。请帮助我理解它。 给定一个整数数组,目标是将它在给定的索引处分成2个较小的数组,将每个数组求和,并找出2个数组之间可能的最小绝对差。
示例:
我有一个数组A [] = {3,1,2,4,3}。
如果我在索引1处分割,则左数组为{3},右数组为{1、2、4、3}。绝对差为|(3)-(1 + 2 + 4 + 3)| = 7。
可能的最小分割是索引3,其中左数组为{3,1,2},右数组为{4,3},绝对差为|(3 +1 + 2)-(4 + 3 )| = 1。
这是我的代码:
import java.lang.*;
class Solution {
public int solution(int[] A) {
// write your code in Java SE 8
int difference = 0;
int leftSum = 0;
int rightSum = 0;
int minValue = 0;
for (int i = 1; i < A.length; i++) {
int c = i - 1;
while(c >= 0) {
leftSum = A[c] + leftSum;
c--;
}
int a = i;
while(a < A.length) {
rightSum = A[a] + rightSum;
a++;
}
difference = Math.abs(leftSum - rightSum);
int temp = difference;
minValue = temp;
if (difference < minValue) {
minValue = difference;
}
}
return minValue;
}
}
答案 0 :(得分:0)
您可能需要提供有关该任务的更多信息,因此我们可以尝试找出您的失误。但是,看一下我看到的代码
minValue = 0;
difference = Math.abs(leftSum - rightSum);
int temp = difference;
minValue = temp;
if (difference < minValue) {
minValue = difference;
}
由此,difference
将始终等于minValue
; difference < minValue
失败。