Szkolenie z równoważności taśmowej równowagi [zamknięte]

Pewnego dnia otrzymałem test pokuty na pracę, dlatego ćwiczyłem wykorzystując niektóre problemy z ich strony treningowejPołączyć

Niestety udało mi się uzyskać tylko 83/100 w pytaniu o równowagę taśm:

Podaje się niepustą tablicę A indeksowaną zerami składającą się z N liczb całkowitych. Tablica A reprezentuje liczby na taśmie.
Każda liczba całkowita P, taka jak 0 <P <N, dzieli tę taśmę na dwie niepuste części: A [0], A [1],…, A [P - 1] i A [P], A [P + 1],…, A [N - 1].
Theróżnica pomiędzy dwiema częściami jest wartość: | (A [0] + A [1] +… + A [P - 1]) - (A [P] + A [P + 1] +… + A [N - 1]) |
Innymi słowy, jest toabsolutny różnica między sumą pierwszej części a sumą drugiej części.

Napisz funkcję, która w przypadku niepustej tablicy A z indeksami N o liczbie całkowitej N zwraca minimalną różnicę, którą można osiągnąć.

Przykład:A[0] = 3 A[1] = 1 A[2] = 2 A[3] = 4 A[4] = 3
Możemy podzielić tę taśmę w czterech miejscach:
P = 1, różnica = | 3 - 10 | = 7
P = 2, różnica = | 4 - 9 | = 5
P = 3, różnica = | 6 - 7 | = 1
P = 4, różnica = | 10 - 3 | = 7
W tym przypadku zwróciłbym 1, ponieważ jest to najmniejsza różnica.

N to int, zakres [2..100.000]; każdy element A to int, zakres [−1,000,1000]. Musi być złożoność czasu O (n),

Mój kod jest następujący:

import java.math.*;
class Solution {
public int solution(int[] A) {

    long sumright = 0;
    long sumleft = 0;
    long ans;

    for (int i =1;i<A.length;i++)
        sumright += A[i];

    sumleft = A[0];
    ans =Math.abs(Math.abs(sumright)+Math.abs(sumleft));

    for (int P=1; P<A.length; P++)
    {
        if (Math.abs(Math.abs(sumleft) - Math.abs(sumright))<ans)
            ans = Math.abs(Math.abs(sumleft) - Math.abs(sumright));
        sumleft += A[P];
        sumright -=A[P];
    }
    return (int) ans;  
}

Trochę oszalałem z Math.abs. Dwa obszary testowe, na których się nie udaje, są „podwójne” (co moim zdaniem to dwie wartości, -1000 i 1000 oraz „mała”.http://codility.com/demo/results/demo9DAQ4T-2HS/

Każda pomoc byłaby doceniana, chcę się upewnić, że nie popełniam żadnych podstawowych błędów.

questionAnswers(21)

yourAnswerToTheQuestion