我试图通过编码的挑战之一,从可编码性,但返回的值是错误的。请帮助我理解它。
给定一个整数数组,目标是将它在给定索引处拆分为两个较小的数组,对每个数组求和,并找出这两个数组之间可能存在的最小绝对差。
例子:
我有一个数组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;
}
}
最佳答案
你可能需要提供更多关于这项任务的信息,这样我们就可以试着找出你的错误但是,看看我看到的代码
minValue = 0;
difference = Math.abs(leftSum - rightSum);
int temp = difference;
minValue = temp;
if (difference < minValue) {
minValue = difference;
}
由此,
difference
将始终等于minValue
;difference < minValue
失败。