Was ist los mit dieser Lösung? (Perm-Missing-Elem-Codilitätstest)

Ich habe angefangen mit Codility zu spielen und bin auf folgendes Problem gestoßen:

Es wird ein Array A mit Nullindex angegeben, das aus N verschiedenen ganzen Zahlen besteht. Das Array enthält Ganzzahlen im Bereich [1 .. (N + 1)], was bedeutet, dass genau ein Element fehlt.

Ihr Ziel ist es, das fehlende Element zu finden.

Schreiben Sie eine Funktion:

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

Dies gibt bei einem mit Nullen indizierten Array A den Wert des fehlenden Elements zurück.

Beispiel: Geben Sie Array A so an, dass:

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

Die Funktion sollte 4 zurückgeben, da es sich um das fehlende Element handelt.

Annehmen, dass:

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

Komplexität:

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

Ich habe folgende Lösung eingereicht (in PHP):

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

Dies ergab eine Punktzahl von 66 von 100, da der Test mit großen Arrays fehlgeschlagen ist: "large_range range sequence, length = ~ 100,000" mit dem Ergebnis: Das mit RUNTIME ERROR getestete Programm wurde unerwartet beendet. stdout: Ungültiger Ergebnistyp, int expected.

Ich habe lokal mit einem Array von 100.000 Elementen getestet und es hat problemlos funktioniert. Also, was scheint das Problem mit meinem Code zu sein und welche Art von Testfällen hat Codility verwendet, um "Invalid result type, int expected" zurückzugeben?

Antworten auf die Frage(28)

Ihre Antwort auf die Frage