spliting数组的输出不符合预期

时间:2015-12-03 14:40:24

标签: java arrays

  

给定一个int数组作为输入,如果可以将数组拆分为两个,则返回true,以便左边数字的总和等于右边数字的总和。

MyApproach

我从正面和背面添加元素直到它们的长度的一半并添加了它们的Sum.When我发现它们相等我返回true,否则我返回false

public boolean canSplit(int[] arr)

{
    int k=0;
    int SumF[]=new int[1];
    int SumB[]=new int[1];
    for(int i=0;i<arr.length/2;i++)
    {
       SumF[k]=arr[i]+SumF[k];
    }
    for(int j=arr.length-1;j>=arr.length/2;j--)
    {
                   SumB[k]=arr[j]+SumB[k];

    }

    if(SumF==SumB)
    return true;
    else
    return false;


}


Parameters       Actual Output  Expected Output

'{10,11,12,5,4}'    false       true
  

MyQuestion:任何人都可以指导我做错了吗?

1 个答案:

答案 0 :(得分:4)

问题不在于分割 half 而只是分成两个。现在,您只需检查一个特定方式来拆分数组。你必须检查所有方法。

这样做的一种方法是找到数组中所有数字的总和,然后循环数字,计算到那个地方的所有数字的运行总和,看看是否有一半的数字。总和。

public static boolean canSplit(int[] array) {
    int total = IntStream.of(array).sum();
    int sum = 0;
    for (int i : array) {
        sum += i;
        if (sum == total - sum) return true;
    }
    return false;
}