class Solution {
public int solution(int[] A) {
long totalSum = 0;
for(int i = 1; i< A.length; i++)
{
totalSum += A[i]; // same as sumright ok till now
}
long mindiff = 0;
long tempdiff = 0;
long part1 = 0, part2;
part1 += A[0];
part2 = totalSum ;
mindiff = Math.abs(part1 - part2);
/*System.out.println("part1 is"+part1);
System.out.println("part2 is"+part2);
System.out.println(mindiff);
*/for(int i = 1; i< A.length; i++)
{
//System.out.println("loopindex is "+i);
part1 += A[i];
part2 -= A[i];
tempdiff = Math.abs(part1 - part2);
/*System.out.println("part1 is"+part1);
System.out.println("part2 is"+part2);
System.out.println("tempdiff is"+ tempdiff);
*/
if(tempdiff < mindiff)
{
mindiff = tempdiff;
}
//System.out.println(mindiff);
}
return (int)mindiff;
}
}
请查看此链接
https://codility.com/demo/results/demoD28TY3-RD4/
有没有办法,我们可以获得用于验证密码测试的测试输入?
我的错误答案是两个案例
- 小元素 - 两个要素
请告知。
答案 0 :(得分:1)
问题是你在最后一个元素之后分裂,导致空的一半。
将您的第二次迭代更改为:
for(int i = 1; i< A.length - 1; i++)
不要忘记考虑如果A为空或长度为1会发生什么。
编辑很快就会出现一个固定版本:https://codility.com/demo/results/demoZFZ6ED-2CP/