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”?