Java for Codility中的TapeEquilibrium问题

时间:2019-02-06 18:36:53

标签: java arrays algorithm

我正在尝试通过编码来应对挑战之一,但是返回的值是错误的。请帮助我理解它。 给定一个整数数组,目标是将它在给定的索引处分成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;
    }
}

1 个答案:

答案 0 :(得分:0)

您可能需要提供有关该任务的更多信息,因此我们可以尝试找出您的失误。但是,看一下我看到的代码

minValue = 0;
difference = Math.abs(leftSum - rightSum);
int temp = difference;
minValue = temp;
if (difference < minValue) {
    minValue = difference;
}

由此,difference将始终等于minValuedifference < minValue失败。