Я начал использовать Codility и столкнулся с этой проблемой:
Дан массив A с нулевым индексом, состоящий из N различных целых чисел.
Массив содержит целые числа в диапазоне [1..(N + 1)], что означает
что отсутствует ровно один элемент.
Ваша цель — найти этот недостающий элемент.
Напишите функцию:
Код: Выделить всё
int solution(int A[], int N);
элемента.
Например, для массива A такой, что:
Код: Выделить всё
A[0] = 2 A[1] = 3 A[2] = 1 A[3] = 5
Предположим, что:
- N — целое число в диапазоне [0..100 000];
- все элементы A различны;
- каждый элемент массива A представляет собой целое число в диапазоне [1..(N + 1)].
- ожидаемая временная сложность в наихудшем случае равна O(N);
- ожидаемая пространственная сложность в наихудшем случае равна O(1), за пределами хранилища ввода (не считая места, необходимого для входных аргументов).
Код: Выделить всё
function solution($A) {
$nr = count($A);
$totalSum = (($nr+1)*($nr+2))/2;
$arrSum = array_sum($A);
return ($totalSum-$arrSum);
}
large_range последовательность диапазона, длина = ~100 000
с результатом:
Код: Выделить всё
RUNTIME ERROR
tested program terminated unexpectedly
stdout:
Invalid result type, int expected.
Неверный тип результата, ожидается int
Подробнее здесь: https://stackoverflow.com/questions/197 ... or-my-code