一些在线测试的问题:
无法复制问题,因为它受版权保护。问题可以在这里找到: 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个测试用例中失败了?我知道可能无法看到输入是什么,所以依靠代码检查。
答案 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++)