Co jest nie tak z tym rozwiązaniem? (Test korygowania Perm-Missing-Elem)

Zacząłem grać z kodowaniem i natknąłem się na ten problem:

Podana jest tablica A indeksowana zerami składająca się z N różnych liczb całkowitych. Tablica zawiera liczby całkowite w zakresie [1 .. (N + 1)], co oznacza, że ​​brakuje dokładnie jednego elementu.

Twoim celem jest znalezienie tego brakującego elementu.

Napisz funkcję:

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

że, biorąc pod uwagę tablicę A indeksowaną zerami, zwraca wartość brakującego elementu.

Na przykład dana tablica A, która:

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

funkcja powinna zwrócić 4, ponieważ jest to brakujący element.

Zakładać, że:

    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)].

Złożoność:

    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).

Wysłałem następujące rozwiązanie (w PHP):

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

co dało mi 66 punktów na 100, ponieważ nie powiodło się wykonanie testu z dużymi tablicami: „sekwencja zakresów large_range, długość = ~ 100 000” z wynikiem: program RUNTIME ERROR zakończony nieoczekiwanie stdout: Niepoprawny typ wyniku, oczekiwany int.

Przetestowałem lokalnie z tablicą 100 000 elementów i działało bez problemów. Jaki więc wydaje się być problem z moim kodem i jakie przypadki testowe wykorzystano do zwrócenia „Nieprawidłowy typ wyniku, oczekiwany int”?

questionAnswers(28)

yourAnswerToTheQuestion