Entrenamiento de Codility Equilibrium Codility [cerrado]

Recibí una prueba de codilidad el otro día para un trabajo, como tal, he estado practicando usando algunos de los problemas de su página de entrenamientoEnlazar

Desafortunadamente, solo he podido obtener 83/100 en la pregunta de Tape-Equilibrium:

Se proporciona una matriz A no indexada a cero no A que consta de N enteros. La matriz A representa números en una cinta.
Cualquier número entero P, tal que 0 <P <N, divide esta cinta en dos partes no vacías: A [0], A [1],…, A [P - 1] y A [P], A [P + 1],…, A [N - 1].
losdiferencia entre las dos partes está el valor de: | (A [0] + A [1] +… + A [P - 1]) - (A [P] + A [P + 1] +… + A [N - 1]) |
En otras palabras, es elabsoluto diferencia entre la suma de la primera parte y la suma de la segunda parte.

Escriba una función que, dada una matriz A no indexada a cero no vacía de N enteros, devuelva la diferencia mínima que se puede lograr.

Ejemplo:A[0] = 3 A[1] = 1 A[2] = 2 A[3] = 4 A[4] = 3
Podemos dividir esta cinta en cuatro lugares:
P = 1, diferencia = | 3 - 10 | = 7
P = 2, diferencia = | 4 - 9 | = 5
P = 3, diferencia = | 6 - 7 | = 1
P = 4, diferencia = | 10 - 3 | = 7
En este caso devolvería 1 ya que es la diferencia más pequeña.

N es un int, rango [2..100,000]; cada elemento de A es un int, rango [−1,000..1,000]. Tiene que ser O (n) la complejidad del tiempo,

Mi código es el siguiente:

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;  
}

Me enojé un poco con el Math.abs. Las dos áreas de prueba en las que falla son "dobles" (que creo que son dos valores, -1000 y 1000, y "pequeñas".http://codility.com/demo/results/demo9DAQ4T-2HS/

Cualquier ayuda sería apreciada, quiero asegurarme de que no estoy cometiendo ningún error básico.

Respuestas a la pregunta(21)

Su respuesta a la pregunta