Что не так с этим решением? (Тест на перманентность с отсутствующим элементом)

Я начал играть с хитростью и столкнулся с этой проблемой:

Дан индексированный нулем массив A, состоящий из N различных целых чисел. Массив содержит целые числа в диапазоне [1 .. (N + 1)], что означает, что отсутствует только один элемент.

Ваша цель - найти этот недостающий элемент.

Напишите функцию:

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

что, учитывая нулевой индексированный массив A, возвращает значение отсутствующего элемента.

Например, заданный массив A такой, что:

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

функция должна вернуть 4, так как это отсутствующий элемент.

Предположить, что:

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

Сложность:

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

Я представил следующее решение (на PHP):

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

что дало мне оценку 66 из 100, потому что она провалила тест с большими массивами: «последовательность длинных диапазонов, длина = ~ 100 000» с результатом: неожиданно завершилась тестовая программа RUNTIME ERROR stdout: недопустимый тип результата, ожидаемый int.

Я тестировал локально с массивом из 100 000 элементов, и он работал без проблем. Итак, в чем заключается проблема с моим кодом и какие тестовые примеры использовали codility для возврата «недопустимый тип результата, ожидаемый int»?

Ответы на вопрос(28)

Ваш ответ на вопрос