这个解决方案有什么问题?

时间:2014-08-02 00:35:46

标签: java

一些在线测试的问题:

无法复制问题,因为它受版权保护。问题可以在这里找到: http://codility.com/c/run/demo534WQK-UBH

正如我们从示例中看到的那样:

P = 1, difference = |3 − 10| = 7
P = 2, difference = |4 − 9| = 5
P = 3, difference = |6 − 7| = 1
P = 4, difference = |10 − 3| = 7 

元素之和始终是常数(3 + 10)=(4 + 9)=(6 + 7)等。我们还注意到左侧数字增加而右侧数字减少。

我的解决方案:

class Solution
{
    public int solution(int A[])
    {
        long sum = 0;
        for (int i = 0; i < A.length; i++)
        {
            sum += A[i];
        }
        long currSum = 0;
        long ans = Long.MAX_VALUE;
        for (int i = 0; i < A.length; i++)
        {

            currSum += A[i];
            long diff = Math.abs((sum - currSum) - currSum);
            ans = Math.min(ans, diff);
        }
        return (int) ans;
    }

}

http://codility.com/demo/results/demo8MC2GU-7BK/

现在有什么办法,我可以找出为什么我的解决方案在2个测试用例中失败了?我知道可能无法看到输入是什么,所以依靠代码检查。

1 个答案:

答案 0 :(得分:3)

问题在于&#34; P&#34;答案中的变量是 0&lt; P&lt; = N

但要求是 0&lt; P&lt; Ñ

因此您需要更改 第二个 循环

for (int i =0;i<A.length;i++)

for (int i =0;i<A.length-1;i++)