O que há de errado com essa solução? (Teste de codificação Perm-Missing-Elem)
Eu comecei a brincar com a codificação e me deparei com esse problema:
Uma matriz indexada com zero Uma forma de N inteiros diferentes é dada. A matriz contém números inteiros no intervalo [1 .. (N + 1)], o que significa que exatamente um elemento está faltando.
Seu objetivo é encontrar esse elemento ausente.
Escreva uma função:
int solution(int A[], int N);
que, dado um array com índice zero A, retorna o valor do elemento ausente.
Por exemplo, dado array A tal que:
A [0] = 2 A [1] = 3 A [2] = 1 A [3] = 5
a função deve retornar 4, pois é o elemento ausente.
Assuma isso:
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)].
Complexidade:
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).
Eu enviei a seguinte solução (em PHP):
function solution($A) {
$nr = count($A);
$totalSum = (($nr+1)*($nr+2))/2;
$arrSum = array_sum($A);
return ($totalSum-$arrSum);
}
o que me deu uma pontuação de 66 de 100, porque estava falhando no teste envolvendo grandes matrizes: "large_range range sequence, length = ~ 100,000" com o resultado: RUNTIME ERROR testado programa finalizado inesperadamente stdout: Tipo de resultado inválido, int esperado.
Eu testei localmente com uma matriz de 100.000 elementos, e funcionou sem problemas. Então, o que parece ser o problema com o meu código e que tipo de casos de teste a codilinidade usa para retornar "tipo de resultado inválido, int esperado"?