私は誠実に遊び始め、この問題に遭遇しました:
N 個の異なる整数からなるゼロインデックスの配列 A が与えられます。配列には [1..(N + 1)] の範囲の整数が含まれています。これは、ちょうど 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);
}
大きな配列を含むテストに失敗していたため、100 点中 66 点のスコアが得られました: "large_range range sequence, length = ~100,000" という結果でした: RUNTIME ERROR でテストされたプログラムが予期せずに終了しました stdout: Invalid result type, int expected.
100.000 要素の配列を使用してローカルでテストしましたが、問題なく動作しました。それで、私のコードの問題と思われるものと、「無効な結果タイプ、int が期待されます」を返すために codility が使用したテストケースの種類は何ですか?