¿Qué está mal con esta solución? (Prueba de codilidad de Perm-Missing-Elem)

Comencé a jugar con codilidad y encontré este problema:

Se proporciona una matriz indexada a cero que consta de N enteros diferentes. La matriz contiene enteros en el rango [1 .. (N + 1)], lo que significa que falta exactamente un elemento.

Tu objetivo es encontrar ese elemento que falta.

Escribe una función:

int solution(int A[], int N); 

que, dada una matriz A indexada a cero, devuelve el valor del elemento que falta.

Por ejemplo, dada la matriz A tal que:

A [0] = 2 A [1] = 3 A [2] = 1 A [3] = 5

La función debe devolver 4, ya que es el elemento que falta.

Asumir que:

    N is an integer within the range [0..100,000];
    the elements of A are all distinct;
    each element of array A is an integer within the range [1..(N + 1)].

Complejidad:

    expected worst-case time complexity is O(N);
    expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).

He enviado la siguiente solución (en PHP):

function solution($A) {
    $nr = count($A);
    $totalSum = (($nr+1)*($nr+2))/2;
    $arrSum = array_sum($A);
    return ($totalSum-$arrSum);
}

lo que me dio un puntaje de 66 de 100, porque no estaba logrando la prueba que involucraba matrices grandes: "secuencia de rango de gran alcance, longitud = ~ 100,000" con el resultado: el programa probado RUNTIME ERROR finalizó inesperadamente stdout: Tipo de resultado no válido, se esperaba int.

Probé localmente con una variedad de 100.000 elementos, y funcionó sin problemas. Entonces, ¿cuál es el problema con mi código y qué tipo de casos de prueba usó Codility para devolver "Tipo de resultado no válido, se esperaba int"?

Respuestas a la pregunta(28)

Su respuesta a la pregunta