我试图通过编码的挑战之一,从可编码性,但返回的值是错误的。请帮助我理解它。
给定一个整数数组,目标是将它在给定索引处拆分为两个较小的数组,对每个数组求和,并找出这两个数组之间可能存在的最小绝对差。
例子:
我有一个数组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将始终等于minValuedifference < minValue失败。

10-06 05:21