¿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"?